一尘不染

[STAThread]是做什么的?

c#

我正在学习C#3.5,我想知道[STAThread]我们的程序中做什么?


阅读 277

收藏
2020-05-19

共1个答案

一尘不染

STAThreadAttribute是Windows消息泵与COM组件进行通信的基本要求。尽管核心Windows窗体不使用COM,但OS的许多组件(如系统对话框)仍使用此技术。

MSDN更详细地解释了原因:

STAThreadAttribute指示应用程序的COM线程模型是单线程单元。在使用Windows窗体的任何应用程序的入口点上都必须存在此属性。如果省略,则Windows组件可能无法正常工作。如果该属性不存在,则应用程序将使用Windows窗体不支持的多线程单元模型。

这篇博客文章
为什么需要STAThread?
)也很好地解释了这一要求。如果您想更深入地了解线程模型在CLR级别的工作方式,请参阅2004年6月(存档,2009年4月)上的《MSDN杂志》这篇文章

2020-05-19