所以在這裏我有一個問題,我的C#代碼.. 它重複一個線程幾分鐘StackOverflowException在System.dll中
這裏後接受新的連接 但它變得StackOverflowException在System.dll中是我的代碼
void DoReceive(SocketAsyncEventArgs args)
{
var client = (TCPClient)args.UserToken;
System.Threading.Thread.Sleep(10);
if (!client.socket.ReceiveAsync(args))
{
//System.Threading.Thread.Sleep(10);
DoReceive(args);
}
}
您正在遞歸調用DoReceieve,這會導致SOE。從異常情況下的堆棧跟蹤中可以明顯看出,如果你調試了。 =) – 2013-03-13 13:18:04
如何防止這件事? :S – 2013-03-13 13:20:20
如何使用while循環和重試限制?這比遞歸地重試所有永恆更爲常見。 =) – 2013-03-13 13:22:00