说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

结束线程问题

编辑:说三道四文库 发布时间:2018-08-18 05:57
HTML文档下载 WORD文档下载 PDF文档下载
我在主Form(Form1.cs)中创建了一个线程:
Thread lat;

........
 
lat = new Thread(new ThreadStart(LookupAllProc));
lat.Start();

LookupAllProc 为一在Form1中定义的线程回调函数

当我在另一Form(LAP.cs)中想结束该线程应如何做?

这样好象不行:
Form1 mf = new Form1();
mf.lat.Abort();

总是说:
其他信息: 未将对象引用设置到对象的实例。
把Thread lat;和LookupAllProc都设置为static
然后就可以调用Form1.lat.Abort()
如何得到线程lat 的ID?
这样肯定不行社,你的
Form1 mf = new Form1();这儿是重新创建了一个Form对象,mf和你的主窗口并不是一个对象,所以mf.lat并不等价与主窗口的lat,而实际上你这了只创建了一个新的窗口,又没有启动这个新的窗口了面的mf,所以出现“未将对象引用设置到对象的实例。”错误

解决办法是在LAPForm里面定义一个 public Form1 mainFrom;

在打开LAP窗口的时候:
LapForm xx = new LapForm()
xx.mainForm = this;
xx.Show();

这样你就可以在LAPForm里面使用mainForm.lat.Abort();
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘