【发布时间】:2016-10-28 10:29:38
【问题描述】:
第一次,我编写了一个运行前台(默认)线程的应用程序:
t = new Thread(new ThreadStart(GenerateRandom));
t.Start();
当我在运行线程时关闭表单时,它会崩溃并抛出异常。 经过一番搜索(How to close all running threads?),我发现一个前台线程在关闭主线程后继续运行,我必须将我的线程设置为后台,所以我做了这样的事情:
t = new Thread(new ThreadStart(GenerateRandom));
t.IsBackground = true;
t.Start();
但它仍然抛出异常并且我在运行我的线程时无法关闭我的表单 !!!
我不知道为什么?!
我在FormClosing event中尝试了一些解决方案:
- 使用:
Enviroment.Exit(Enviroment.ExitCode); - 使用:
thread.Abort();
第一个不起作用,当我在运行线程之前关闭表单时,第二个崩溃。
这是我的程序的一些图片:
谢谢大家。
【问题讨论】:
-
在您的屏幕截图中的错误是转换错误,这是因为您的文本值是字符串,您可以在测试框值上调用 Trim
-
想到中止前检查:if (t!= null && t.IsAlive) t.Abort();
-
构造函数中的小
CheckForIllegalCrossThreadCalls = false。什么可能出错?哦等等,这个可能会出错
标签: c# multithreading forms