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”,有时是两者,有时甚至没有。
添加的元素永远不会为空。
为什么?
答案 0 :(得分:4)
首先,您需要使用
private readonly object lockObject = new object();
lock(lockObject)
{
}
您还需要在要添加到列表中的任何位置放置lock(lockObject)
。
希望在某些方面有所帮助。
如果您不想担心线程,也可以查看ConcurrentBag。