我正在分析一位同事的C#应用程序。 VS2015分析工具显示33%的独占样本出现在System.Windows.Forms.Application.Run中。几乎所有的计算都发生在click事件中,并且表单没有响应,正如您所期望的那样。我搜索了代码以确保没有明确创建任何线程。
我试图找出33%的使用位置。当我随机停止应用程序时,它总是在windowThreadProc(文件SystemEvents.cs)中等待消息。即使主计算正在运行,我也可以逐步完成循环;所以,它显然是在一个单独的线程上。
函数EnsureSystemEvents在Main之前运行。我可以单步执行它并看到它为windowThreadProc启动了一个线程。我可以在Main上看到[STAThread]属性。
不应该只有一个线程吗?请解释一下。