2011-06-05 79 views
2

我試圖寫一個Silverlight應用程序,插座可以連接到127.0.0.1:4505但arg.completed事件不起作用SilverLight的插座問題

arg.RemoteEndPoint = new IPEndPoint(IPAddress.Loopback, 4505); 
      arg.UserToken = sck; 
      arg.Completed += new EventHandler<SocketAsyncEventArgs>(arg_Completed); 
      sck.ConnectAsync(arg); 

void arg_Completed(object sender, SocketAsyncEventArgs e) 
     { 
      label1.Content = "Durum!"; 
      if (e.LastOperation == SocketAsyncOperation.Connect) 
      { 
       label1.Content = "Bağlandı!"; 
      }   
     } 

回答

0

你有沒有考慮到ConnectAsync可能無法完成異步。閱讀其文檔here

您應該測試從ConnectAsync返回的布爾值,如果它的true則完成的事件將觸發,否則操作將同步完成並且ConnectAsync不會觸發。您使用本地127.0.0.01的事實增加了同步完成的可能性。

在同步連接上,您傳遞給調用的args對象將相應地發生變化。