默认情况下程序启动后到底是几个线程?
来源:互联网 发布:伪装地理位置软件哪个 编辑:程序博客网 时间:2024/04/27 22:55
默认情况下,在调试状态下我们可以看到下面的效果
这里面的线程中
- 主线程 不必多说,就是程序的主要工作线程
- 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); } }}.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }
那么,此时就可以看到那个辅助线程了
那么,到这里为止,你应该知道了,一个应用程序开起来之后到底会有几个线程了吧?
- 默认情况下程序启动后到底是几个线程?
- Handler默认情况下与调用它的Activity是处于同一个线程的实例证明
- sqlserver2005默认情况下是禁用了tcp/ip连接。启动tcp/ip连接的方法,
- Rxandroid中doOnSubscribe()执行默认情况下所在的线程
- Red Hat默认情况下安装的是GNOME
- 一个JVM进程启动后里面有几个线程
- 一个JVM进程启动后里面有几个线程
- 解决线程中有阻塞情况下程序退出不了
- 关于默认构造函数的几个错误认识(四种情况下,编译器会生成默认构造函数)
- windows下禁止程序启动以及启动后关闭
- SQlyog是mySQl的UGI版,默认情况下中文显示会出现乱码
- 默认情况下inno setup创建的快捷方式中起始位置是空的
- MYSQL在默认的情况下查询是不区分大小写的
- asp.net编写webservice时,默认情况下是不支持session的
- 关于eas 单据中有多个分录的情况下,默认是哪个实现了排序
- 关于eas 单据中有多个分录的情况下,默认是哪个实现了排序
- PHP环境中内置了魔法转义的功能,默认情况下是开启的
- PHP环境中内置了魔法转义的功能,默认情况下是开启的
- 关于Thread.IsAlive属性
- 事件处理程序的处理顺序问题
- 支持取消操作和暂停操作的Backgroundworker
- 线程池(ThreadPool)
- SystemEvents和SystemEvents线程
- 默认情况下程序启动后到底是几个线程?
- 多线程的最佳实践
- 如何:将 TraceSource 和筛选器与跟踪侦听器一起使用(转载)
- 再谈方法的动态调用
- 修改应用程序搜索程序集的私有路径
- 如何实现多文件下载(实例)
- 环境变量(Environment Variable)那点事
- 再谈CLR:GAC目录的构造
- 再谈CLR:如何通过代码获取程序集所引用的程序集信息