List <t> .RemoveAt()</t>的错误

时间:2013-03-12 09:13:36

标签: c# unity3d

lock("data"){
    if(_requestList.Count>1 && _requestList[1]==null){
        Debug.Log("why0");
    }
    _requestList.RemoveAt(0);
    if(_requestList.Count > 0 && _requestList[0] == null){
        Debug.Log("why1");
    }
    doSomething ();
}

_requestList是一个字符串列表

有时会记录“why0”,有时是“why1”,有时是两者,有时甚至没有。

添加的元素永远不会为空。

为什么?

1 个答案:

答案 0 :(得分:4)

首先,您需要使用

private readonly object lockObject = new object();

lock(lockObject)
{

}

您还需要在要添加到列表中的任何位置放置lock(lockObject)

希望在某些方面有所帮助。

如果您不想担心线程,也可以查看ConcurrentBag