2011-12-29 61 views
0
static string IP_Address = ""; 
getIPAddress(); 
MessageBox.Show(IP_Address); 

我的功能暫停的程序是這樣的:直到響應得到

public static void getIPAddress() 
{ 
    Uri uri = new Uri("http://whatismyip.org", UriKind.Absolute); 
    WebClient client = new WebClient(); 

    client.DownloadStringCompleted += (s, e) => 
     { 
      var res = e.Result; 
      IP_Address = res; 
     }; 
    client.DownloadStringAsync(uri); 
} 

我使用這個代碼來設置我的客戶端的IP地址。但問題是,當我運行代碼時,首先顯示空IP_Address字符串,然後只顯示

client.DownloadStringCompleted += (s, e) => 
     { 
      var res = e.Result; 
      IP_Address = res; 
     }; 

部分被執行。任何建議在IP_Address顯示之前運行上述代碼塊。

回答

1
getIPAddress((ip) => 
{ 
     MessageBox.Show(ip); 
}); 

public static void getIPAddress(Action<string> callback) 
{ 
     Uri uri = new Uri("http://whatismyip.org", UriKind.Absolute); 
     WebClient client = new WebClient(); 

     client.DownloadStringCompleted += (s, e) => 
     { 
      var res = e.Result; 

      callback(res); 
     }; 
     client.DownloadStringAsync(uri); 
} 
+0

謝謝@ Ku6opr – 2011-12-29 11:32:32