2011-12-29 47 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