看看你哪个地方赋值的时候为 Null了。

解决方案 »

  1.   

    你这里根本无需使用lock,线程自己内部变量....
    或者你贴的代码不够让我们进行判断...看起来都没错
      

  2.   

    LdapSearchResults fdn=conn.Search("",
    LdapConnection.SCOPE_BASE,
    searchFilter,
    new string[]{"namingcontexts"},  // DNs are kept in 'namingcontexts'
    operational attribute.
    false,
    cons); // Apply the searchLimit to our LDAP Search

    while (fdn.hasMore())只要是集合都会出现上面的错误,这里的fdn集合也是一样,有什么好方法可以调试多线程程序,F10都没反应的,另外出现这个“由于以前的函数求值超时,函数求值被禁用。必须继续执行才能重新启用函数求值。” 在调试时才看到,否则程序根本没反应,也不报错
      

  3.   

    感觉不像是线程同步造成的,
    项目中也是用到多线程中集合,使用lock它的同步对象就可以,没问题啊
      

  4.   

    楼主可以参考一下这里,我实现的多任务异步组件的内部也采用了容器,该容器可以跨线程使用,还提供了代码可以试一下。
    实现增强的异步任务执行组件
    http://blog.csdn.net/zhzuo/archive/2008/07/23/2699847.aspx
      

  5.   

    我也经常用集合的,没出现过你的问题呀.
    你把代码贴全了看看,或者发我邮箱 [email protected]吧.
      

  6.   

    我在线程中用this.BeginInvoke方法来更新窗体状态的,去掉this就可以了,不知道什么原因,再没人回答就结贴了...
      

  7.   

    应该只在显示状态的控件上beginInvoke,否则在整个主UI上的操作全部被当作InvokeRequeied来处理了。