none
线程处理 RRS feed

  • 问题

  • 我在A窗口里面,new 了 N个控件 control1[]。 这些control1[] 是我自定义的控件。

    control1[]里面有一个线程。用来下载图片的。  大概代码如下

     if (null != picture)
                {
                    if (downpicture)
                    {
                        Thread t = new Thread(new ThreadStart(ThreadMethod));
                                         t.Start();//执行线程
                     }
                }

     delegate void MethodInvoker();
            private void ThreadMethod()
            {
                this.Invoke(new MethodInvoker(GetPictureFromServerce));
            }

    但是,如果我在这个线程正在下东西的时候,退出了这个A窗口。

    会在invoke这里报错。因为A窗口已经释放掉了。要求资源未被释放才可以。

    这里,我想改写成这样

      private void ThreadMethod()
            {

            if(null!=this)
                this.Invoke(new MethodInvoker(GetPictureFromServerce));
           else
                  return;
            }

    这样行不行呢?这样应该不会报错了吧 还是应该怎么做呢?

    用线程池么?但是我这里用线程池貌似不够用。才25条线程可以加载到线程池。有时候我这里有很多线程的。
    请问各位这样的情况,你们都怎么解决呢?

    难道用InvokeRequired 么?

    这样:?

      

      private void ThreadMethod()
            {
                if(this.invokerequired)
                 {


                this.Invoke(new MethodInvoker(GetPictureFromServerce));

                      }
           else
                  return;
            }

    • 已编辑 pebeeye 2010年11月18日 6:37 描述不够详细
    2010年11月18日 6:14

答案