ThreadPool与其它代码 执行先后顺序 求解
如下代码:
C# code
if (this.lstb1.Items.Contains(Keywords.Trim()) || Keywords == "")continue;
ThreadPool.QueueUserWorkItem(new WaitCallback(addKeyWords3), Keywords);
这段代码 在执行if 语句前 有可能先执行了ThreadPool.QueueUserWorkItem这里的代码 会导致if语句失效.
这样的说法正确吗?
如果正确,那么以下这段是一定先执行if语句 而不会先执行ThreadPool.QueueUserWorkItem这句吗?:
C# code
if (this.lstb1.Items.Contains(Keywords.Trim()) || Keywords == "")
{
continue;
}
else
{
ThreadPool.QueueUserWorkItem(new WaitCallback(addKeyWords3), Keywords);
}
------解决方案--------------------上下两段代码是一样的,如果是多线程环境下执行这段代码,那么不同线程下可能存在一个在执行if,一个在执行addKeyWords3。
如果你是上多线程环境下使用,那么建议保护好你的公用数据,比如 Keywords。
------解决方案--------------------这得看你if满足不,走哪就走哪