本帖最后由 tiandiyuzhou2 于 2011-11-08 09:04:27 编辑

解决方案 »

  1.   

    你设置断点 看下  Form1 类 什么时候被销毁的  找下 问题正确地方
      

  2.   

    Invoke改为BeginInvoke(异步),不推荐这样做所以还是做好同步
      

  3.   

    恩 我也是不推荐
    this.Invoke(new SetValue(SetListBox), i);
    改成=》
    this.BeginInvoke(new SetValue(SetListBox), i);这样做。不过Invoke的话会抱错,这个问题困扰了我好多天了,还没解决,该怎么解决?
      

  4.   

    google查遍了还是木有解决额。
      

  5.   

    那就等他执行完了,再关闭窗体。
    用AutoRestEvent。关闭窗体事件中调用WaitOne方法。
    FunProc中循环执行完调用Set方法.
      

  6.   

    实际中 会有循环设置value 这个情况么?你希望退出时,直接退出还是怎么
      

  7.   

    实际情况是这样的。
    就是有个范围,然后循环这个范围内的值。
    然后因为是用了委托的BeginInvoke,所以要访问ui线程上的控件就需要在this.Invoke唤起ui线程。
    然后在显示控件上的值退出的话我是想不抱异常,正常退出。
      

  8.   

    可能我问的不准确,换个问法。this.Invoke 会出现几次,在你现在的示例中会多次,因为在循环中。实际中可能只需要一次。处理办法是不一样的。退出的时候 可以强制退出么?
      

  9.   

    恩 
    1:退出的时候可以强制退出,也就是用户在处理的时候可以不让它全部处理完就退出。
    2:
    invoke会出现几次:
    现在我的做法是会出现很多次,非哥帮我看下是不是能出现一次,我说下我的思路
    用户输入开始id,结束id,然后循环这中间的差值。
    在循环中,根据id去获取数据库中的内容,然后在把内容处理显示到richtextbox上,
    并把处理结果(是否相同内容,相同内容不处理,不相同内容处理成功)显示到listbox上。
    由于我用了Delegate.BeginInvoke异步委托执行,所以当要访问控件的时候,需要this.Invoke唤起ui线程。这是我的理解以及我的做法,非哥麻烦看下。
      

  10.   

    强制退出的办法是System.Environment.Exit(-1);写在窗体的关闭事件中Form_FormClosing,缺点是过于暴力。
      

  11.   

    在看看有没有柔和点的方法,
    如果没有的话就只能这样强制退出,或者用Control.beginInvole无视异常了。
      

  12.   

    如果不用循环结束,这样也可以。
    int totalCount=0;
    方法FunProc改成
    public void FunProc()
    {
     do
     {
       Thread.Sleep(100);
       SetListBox(totalCount);
       totalCount++; }while(totalCount<5000);
    }FormClosing事件中
    totalCount=5000;
    Thread.Sleep(500);
      

  13.   

    柔和的办法 就是锁等待.一个好消息,循环 Thread.Sleep(100); 我搞定了.
      

  14.   

    上午吃饭之前把100改成500 很容易就OK的,但是100就是报错.有个死锁的问题,多次尝试后才明白.具体的方案,我得写篇blog记录下来.你先看你另外的问题吧. 晚些时候 我会回复的.
      

  15.   

    非哥,我上面的Thread.Sleep(100)是模拟正在处理的时间,实际情况是处理时间,不像上面的例子直接得到i显示在控件上。
      

  16.   

    恩 那我等你的blog.这两天麻烦你了,谢谢你。
      

  17.   

    额 错误就是
    无法访问已释放的对象。
    对象名:“Form1”。
      

  18.   

    http://write.blog.csdn.net/postedit/6948702
      

  19.   

    http://blog.csdn.net/sandy945/article/details/6948702