ThreadPool与其它代码 执行先后顺序 求解解决方案
ThreadPool与其它代码 执行先后顺序 求解如下代码:C# code if (this.lstb1.Items.Contains(Keywords.Trim(
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满足不,走哪就走哪