我在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;
}