Nol*_*rin 232
这STAThreadAttribute
基本上是Windows消息泵与COM组件通信的要求.虽然核心Windows窗体不使用COM,但操作系统的许多组件(如系统对话框)都使用此技术.
MSDN稍微详细解释了原因:
STAThreadAttribute指示应用程序的COM线程模型是单线程单元.此属性必须出现在使用Windows窗体的任何应用程序的入口点上; 如果省略,Windows组件可能无法正常工作.如果该属性不存在,则应用程序使用多线程单元模型,Windows Forms不支持该模型.
这篇博文(为什么需要STAThread?)也很好地解释了这个要求.如果您想更深入地了解线程模型在CLR级别的工作方式,请参阅2004年6月的MSDN杂志文章(Archived,2009年4月).
Spe*_*nce 33
它告诉编译器您处于单线程单元模型中.这是一个邪恶的COM事物,它通常用于Windows窗体(GUI),因为它使用Win32作为其绘图,实现为STA.如果您使用来自多个线程的STA模型,那么您将获得损坏的对象.
这就是你必须从另一个线程调用Gui的原因(如果你已经完成了任何表格编码).
基本上不用担心,只要接受Windows GUI线程必须标记为STA,否则会发生奇怪的事情.
归档时间: |
|
查看次数: |
195052 次 |
最近记录: |