第一次,我编写了一个运行前景(defult)线程的应用程序:
t = new Thread(new ThreadStart(GenerateRandom));
t.Start();
当我在运行线程时关闭我的表单时,它会崩溃并抛出异常。 在一些搜索(How to close all running threads?)之后,我发现前景线程在关闭main之后一直运行,我必须将我的线程设置为背景,所以我做的事情是这样的:
t = new Thread(new ThreadStart(GenerateRandom));
t.IsBackground = true;
t.Start();
但它仍然会抛出异常并且我在运行我的线程时无法关闭mhy形式 !!!
我不知道为什么?!
我在 FormClosing事件中尝试了一些解决方案:
答案 0 :(得分:1)
您是否看到了异常消息FormatException
。你会用这个名字搜索你会有想法吗?它与您运行的线程无关。它发生的原因是,输入的文本不是数字,因此尝试将其解析为Int
失败,但该异常。
答案 1 :(得分:1)
通常您运行后台作业 UNTIL 表单已关闭。
类似的东西:
void myThreadJob()
{
while (!IsDisposed)
{
// do my "infinite" task until the form is disposed
}
}
另一种方法是在表单中包含一个布尔字段。表单关闭后,请在true
事件中将字段设置为FormClosing
。然后检查线程代码中while
循环中的布尔字段状态。