SuperSocket.ClientEngine icon indicating copy to clipboard operation
SuperSocket.ClientEngine copied to clipboard

现在已经正在使用此 SocketAsyncEventArgs 实例进行异步套接字操作

Open PFSHI opened this issue 8 years ago • 2 comments

SuperSocket.ClientEngine version="0.8.0.10" targetFramework="net45" ,部署在IIS上,断线重连的时候都会报这个错。

Exception: System.InvalidOperationException

Message: "现在已经正在使用此 SocketAsyncEventArgs 实例进行异步套接字操作。

StackTrace: 在 System.Net.Sockets.SocketAsyncEventArgs.StartConfiguring() 在 System.Net.Sockets.SocketAsyncEventArgs.SetBufferInternal(Byte[] buffer, Int32 offset, Int32 count) 在 SuperSocket.ClientEngine.AsyncTcpSession.SetBuffer(ArraySegment1 bufferSegment) 在 SuperSocket.ClientEngine.ClientSession.SuperSocket.ClientEngine.IBufferSetter.SetBuffer(ArraySegment1 bufferSegment) 在 SuperSocket.ClientEngine.EasyClientBase.OnSessionDataReceived(Object sender, DataEventArgs e) 在 SuperSocket.ClientEngine.AsyncTcpSession.ProcessReceive(SocketAsyncEventArgs e) 在 System.Net.Sockets.SocketAsyncEventArgs.OnCompleted(SocketAsyncEventArgs e) 在 System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 在 System.Net.Sockets.SocketAsyncEventArgs.FinishOperationSuccess(SocketError socketError, Int32 bytesTransferred, SocketFlags flags) 在 System.Net.Sockets.SocketAsyncEventArgs.CompletionPortCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped) 在 System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP) 异常信息: System.InvalidOperationException 在 System.Net.Sockets.SocketAsyncEventArgs.StartConfiguring() 在 System.Net.Sockets.SocketAsyncEventArgs.SetBufferInternal(Byte[], Int32, Int32) 在 SuperSocket.ClientEngine.AsyncTcpSession.SetBuffer(System.ArraySegment1<Byte>) 在 SuperSocket.ClientEngine.ClientSession.SuperSocket.ClientEngine.IBufferSetter.SetBuffer(System.ArraySegment1<Byte>) 在 SuperSocket.ClientEngine.EasyClientBase.OnSessionDataReceived(System.Object, SuperSocket.ClientEngine.DataEventArgs) 在 SuperSocket.ClientEngine.AsyncTcpSession.ProcessReceive(System.Net.Sockets.SocketAsyncEventArgs) 在 System.Net.Sockets.SocketAsyncEventArgs.OnCompleted(System.Net.Sockets.SocketAsyncEventArgs) 在 System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) 在 System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) 在 System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) 在 System.Net.Sockets.SocketAsyncEventArgs.FinishOperationSuccess(System.Net.Sockets.SocketError, Int32, System.Net.Sockets.SocketFlags) 在 System.Net.Sockets.SocketAsyncEventArgs.CompletionPortCallback(UInt32, UInt32, System.Threading.NativeOverlapped*) 在 System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32, UInt32, System.Threading.NativeOverlapped*)

PFSHI avatar May 09 '17 03:05 PFSHI

现在解决了吗 cs结构也会出现 不是每把都出现 偶发的

batsword avatar Aug 09 '17 02:08 batsword

后面确实发现cs也会偶尔出现这个问题,发现这个问题都是在成功连接上之后断线重连才可能出现的,所以我先采用临时的解决办法,就是成功连接上之后,如果断线重连,就重新new一个实例,目前运行正常。

PFSHI avatar Aug 09 '17 02:08 PFSHI