默认情况下,在调试状态下我们可以看到下面的效果

默认情况下程序启动后到底是几个线程?

这里面的线程中

  • 主线程 不必多说,就是程序的主要工作线程
  • SystemEvents线程之前探讨过是系统事件触发之后的工作线程
  • 另外几个线程,很奇怪。但至少那个vshost.RunParkingWindow,从字面上说可能与vshost有关

 

接下来,我们尝试禁用掉vshost(下图中禁用“启用Visual Studio宿主进程”)

默认情况下程序启动后到底是几个线程?

再来看线程信息

默认情况下程序启动后到底是几个线程?

整个世界清净多了,现在就剩下了一个线程。这与我们一般意义上讲的单线程程序是相吻合的。

那么,为什么连那个System Events线程都没有了呢?这是因为我们当前程序并没有监控有关的SystemEvents事件,所以它默认是不会创建这个线程的

如果我们添加了如下的代码

using System;
using System.Threading;
using Microsoft.Win32;

namespace ConsoleApplication1
{
    class Program
    {
        
        static void Main(string[] args)
        {

            Console.WriteLine("Main Thread ID:{0}", Thread.CurrentThread.ManagedThreadId);

            SystemEvents.TimerElapsed += new TimerElapsedEventHandler(SystemEvents_TimerElapsed);
            SystemEvents.CreateTimer(1000);
            Console.Read();


        }

        static void SystemEvents_TimerElapsed(object sender, TimerElapsedEventArgs e)
        {
            Console.WriteLine("System Events Thread ID:{0}",Thread.CurrentThread.ManagedThreadId);
        }

    }
}

那么,此时就可以看到那个辅助线程了

默认情况下程序启动后到底是几个线程?

那么,到这里为止,你应该知道了,一个应用程序开起来之后到底会有几个线程了吧?

相关文章:

  • 2021-08-22
  • 2021-12-29
  • 2022-12-23
  • 2021-05-19
  • 2021-11-20
  • 2021-11-13
  • 2022-12-23
  • 2022-01-01
猜你喜欢
  • 2021-10-16
  • 2021-07-05
  • 2021-10-18
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案