2011-06-05 59 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对象将相应地发生变化。