我遇到一个非常奇怪的问题:当我在unity3d webplayer中使用Socket.Connect()时,遇到“System.Security.SecurityException:无法连接,因为没有找到有效的跨域策略”,但是Socket.BeginConnect没问题(),那有什么区别?
答案 0 :(得分:6)
Socket.Connect:http://msdn.microsoft.com/en-us/library/ych8bz3x.aspx
Socket.BeginConnect http://msdn.microsoft.com/en-us/library/6aeby4wt%28VS.80%29.aspx
由于文档状态Connect是同步的,这意味着它将阻止当前线程,直到建立连接。
BeginConnect方法是异步的,这意味着它将在不同的线程中进行连接,并在连接完成时通知回来。它不会阻止您当前的调用线程。您需要致电EndConnect。
Socket.ConnectAsync提供SocketAsyncEventArgs作为参数,与BeginConnect提供的3个参数相比,它包含更多信息。另外我知道ConnectAsync比BeginConnect晚推出并解决了与超时相关的一些问题(现在不记得这个讨论的来源)。在可能的情况下首选ConnectAsync(尽管它需要min .NET 2.0 SP1)。
Silverlight中不支持BeginConnect方法(仅支持ConnectAsync),因此如果您打算开发客户端Silverlight应用程序,这可能是另一个问题。