我刚刚创建了一个新的WPF应用程序,它有大约5个窗口,并使用了Xceed数据网格.在查看任务管理器后,我看到这个小应用程序运行了19个线程.
这可能是正确的吗?我希望WPF框架使用2-3个线程,但不是19个.或者我做错了什么?
Jer*_*ard 18
首先,它不是19.
当运行"Hello,World!"时 WPF应用程序,我在任务管理器中看到10个线程.当使用Visual Studio调试器运行相同的应用程序时,它使用19.因此,首先,将这些中的9个作为调试器的开销添加.
现在为10.
根据MSDN杂志的一篇名为"使用Dispatcher构建更多响应式应用程序"的文章,WPF从两个主题开始:
所有WPF应用程序都以两个重要的线程开始,一个用于渲染,另一个用于管理用户界面.渲染线程是一个在后台运行的隐藏线程,因此您通常处理的唯一线程是UI线程.
但根据这篇文章,所有托管应用程序中都有许多基本线程,无论是否为WPF:
有不同类型的.NET线程:终结器,GC,调试器,计时器,线程池,主线程和后台线程.但并非所有与.NET相关的线程都受到管理.
从WPF中的两个开始,添加GC和终结器以获得最多四个.添加调试器线程(即使没有调试,所有托管应用程序都有一个)到达五.添加计时器以获得六个.
并且,在VS外部启动后,将调试器附加到我的WPF应用程序,我可以看到线程池中有两个工作线程.这可能是最低限度.这使我的应用程序达到八个.
有两个我不能完全解释,但它们很可能是互操作的COM线程(它们绝对不是托管线程).我引用的第二篇文章讨论了更多这些.
但这里故事的真正道德是,不要担心它们.如果是香草"Hello,World!" app使用10,这是你的基线. 只关心你创建的线程超出这个最小值.
| 归档时间: |
|
| 查看次数: |
1011 次 |
| 最近记录: |