C#多线程怎么回事。
我开启了一个线程,然后在那个线程放了一个死循环。就这样,无法让我的进程退出了?我真的感觉有一点扯蛋。我关闭了窗口,难道不销毁进程么?我关闭了窗口,进程还退不出去。搞不半天...
我开启了一个线程,然后在那个线程放了一个死循环。 就这样,无法让我的进程退出了?我真的感觉有一点扯蛋。 我关闭了窗口,难道不销毁进程么? 我关闭了窗口,进程还退不出去。搞不半天都不知道是什么原因。 难道还要用什么线程关闭函数,去退出那个线程。 C++都没碰到过这种情况。我真心想不明白。 关闭窗口了,默认处理函数,应该把一切都解决了。 难道还要自己来退出。调用神马APPLICATION.EXIT ENVIRONMENT.EXIT之类函数。
展开
4个回答
展开全部
C#中主窗体是在主线程中运行的,主窗体关闭,主线程被销毁,但其它线程依然会在线程池中运行,既然运行,进程自然就不会关闭。
“关闭窗口了,默认处理函数,应该把一切都解决了。”你的这个想法,并不合适,你要考虑到一个程序有多个窗体的情况,难道我打开了10个窗体,关闭了1个就要把进程结束掉?
Application.Exit()方法就是为了解决这种情况,这个方法执行时,会通知所有线程处理当前工作,并结束运行;
而Environment.
Exit()就不够友好,它会立刻强行终止所有线程,这样程序可能来不及做出一些处理导致丢失数据,相比之下,推荐使用 Application.Exit();
“关闭窗口了,默认处理函数,应该把一切都解决了。”你的这个想法,并不合适,你要考虑到一个程序有多个窗体的情况,难道我打开了10个窗体,关闭了1个就要把进程结束掉?
Application.Exit()方法就是为了解决这种情况,这个方法执行时,会通知所有线程处理当前工作,并结束运行;
而Environment.
Exit()就不够友好,它会立刻强行终止所有线程,这样程序可能来不及做出一些处理导致丢失数据,相比之下,推荐使用 Application.Exit();
追问
我那个是主窗口,关闭了主窗口,其他都应该退出吧。WINDOWS应用程序不就这样么。
追答
不是,一个主线程,其它的都在子线程运行;而且,主窗体和子窗体很多时候只是我们逻辑上的一个概念,很多时候窗体间并没有明确的从属关系;
就比如IE,你打开多个网页,哪一个是主窗体?
不可能关闭一个“主窗体“就把所有线程结束掉。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
永远不要怀疑是别人问题!!
设置 thread.IsBackground = true 解决
设置 thread.IsBackground = true 解决
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
线程.abort呀
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |