0
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”,有时会记录两者,有时什么也不会。

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

所以为什么?

4

1 回答 1

4

首先你需要使用一个

private readonly object lockObject = new object();

lock(lockObject)
{

}

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

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

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

于 2013-03-12T09:16:57.673 回答