空工人线程,他们是什么?

时间:2009-08-30 16:36:37

标签: .net winforms multithreading user-interface worker-thread

在调试.NET Framework 3.5,WinForms应用程序时,我发现了一些没有名称的“工作线程”。

我知道当你打开一个应用程序时,默认情况下你有一个工作线程。但是在调试过程中,当我暂停调试器并查看“线程”窗口时,我看到大约5个以上类似的线程(优先级=正常)。

应用程序打开的所有线程都有一个名称,所以这些不是从代码中打开的,至少不是通过Thread.Start()

当我尝试双击时,VS.NET也找不到代码。

这些线程是什么?它们是正常的,还是某些操作会以某种方式留下空线?

它们可以是定时器还是类似的非显而易见的控件,函数可以在后台使用临时线程吗?

3 个答案:

答案 0 :(得分:5)

我只是将VS中的线程与WinDbg中的线程进行比较,看起来VS在线程窗口中将线程池线程标记为“工作线程”。因此,我假设您所看到的是由于使用BackgroundWorker,Timer,BeginInvoke或类似的线程池功能而启动的线程。

答案 1 :(得分:0)

继续Rushyo的帖子,这些线程可以与Visual Studio托管和调试程序的方式相关(您是否尝试从Visual Studio外部运行发布版本并使用Process Explorer进行仔细检查)。

如果没有明确地成为VS托管的一部分,它们可能与.NET线程池有关,用于定时器,异步方法调用。

答案 2 :(得分:0)

当你向应用程序添加线程时,就是你调用GetOpenFileName()(或其他引发ppen / save文件对话框的函数。)

Windows在后台执行驱动器/文件夹扫描,它显然在关闭对话框后保持线程活动。我刚刚通过试验发现了这一点。可能会有更多这样的观点。

相关问题