本帖最后由 z2394945062 于 2012-04-18 10:52:51 编辑

解决方案 »

  1.   

    上下两段代码是一样的,如果是多线程环境下执行这段代码,那么不同线程下可能存在一个在执行if,一个在执行addKeyWords3。如果你是上多线程环境下使用,那么建议保护好你的公用数据,比如 Keywords。
      

  2.   

    if (this.lstb1.Items.Contains(Keywords.Trim()) || Keywords == "") { continue; } else { ThreadPool.QueueUserWorkItem(new WaitCallback(addKeyWords3), Keywords); }
    那么,这段代码 运行时仍然有可能是先运行 ThreadPool.QueueUserWorkItem这个语句?