首页 新闻 会员 周边

调用List<T>的Clear()方法报System.IndexOutOfRangeException,具体如下

0
悬赏园豆:5 [已解决问题] 解决于 2013-10-22 23:04

   at System.Array.Clear(System.Array, Int32, Int32)
   at System.Collections.Generic.List`1[[System.Byte, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].Clear()
   at Kael.SocketIOCP.Share.Share.BufferManager.Init()
   at Kael.SocketIOCP.Server.SocketServerSuper.BeginReceive(System.Net.Sockets.SocketAsyncEventArgs)
   at Kael.SocketIOCP.Server.SocketServerSuper.Asyn_Completed(System.Object, System.Net.Sockets.SocketAsyncEventArgs)
   at System.Net.Sockets.SocketAsyncEventArgs.OnCompleted(System.Net.Sockets.SocketAsyncEventArgs)
   at System.Net.Sockets.SocketAsyncEventArgs.ExecutionCallback(System.Object)
   at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
   at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
   at System.Net.Sockets.SocketAsyncEventArgs.FinishOperationSuccess(System.Net.Sockets.SocketError, Int32, System.Net.Sockets.SocketFlags)
   at System.Net.Sockets.SocketAsyncEventArgs.CompletionPortCallback(UInt32, UInt32, System.Threading.NativeOverlapped*)
   at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32, UInt32, System.Threading.NativeOverlapped*)

 

求解决方法

拖鞋王子的主页 拖鞋王子 | 初学一级 | 园豆:37
提问于:2013-01-10 15:26
< >
分享
最佳答案
0

看样子是多线程操作List的问题。List<string>不是一个线程安全的类。可以考虑使用.net4.0提供的线程安全集合。或者自行为你的List什么add,delete之前加一个锁.

FCL的线程安全集合参考:http://msdn.microsoft.com/zh-cn/library/dd460718.aspx

加锁可以参考:http://www.cnblogs.com/heyuquan/archive/2013/01/10/2854311.html

收获园豆:5
滴答的雨 | 老鸟四级 |园豆:3660 | 2013-01-10 15:44

net4.0提供的线程安全集合有哪些

拖鞋王子 | 园豆:37 (初学一级) | 2013-01-10 15:48

@拖鞋王子:FCL的线程安全集合参考:http://msdn.microsoft.com/zh-cn/library/dd460718.aspx 

滴答的雨 | 园豆:3660 (老鸟四级) | 2013-01-10 15:53
其他回答(1)
0

额,那么有缘,上午我发个问题,过了一会你的问题出现在我的问题上方,下午又来了,我来捧个场

阿磊ing | 园豆:2 (初学一级) | 2013-01-10 15:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册