读书人

ThreadPool与其它代码 执行先后顺序 求

发布时间: 2012-04-27 11:57:44 作者: rapoo

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满足不,走哪就走哪

读书人网 >C#

热点推荐