C# 设置为单线程单元(STA)模式

C# 设置为单线程单元(STA)模式,第1张

Invoke((EventHandler)delegate { test()})

public void test()

{

openFileDialog1.Filter = "图片文件|*.bmp*.png*.jpg*gif"//显示所有图片文件

if (openFileDialog1.ShowDialog() == DialogResult.OK)

{

pictureBox1.Image = Image.FromFile(openFileDialog1.FileName)

if (File.Exists(FilePath))

{

System.IO.File.Delete(FilePath)

System.IO.File.Copy(openFileDialog1.FileName, FilePath)

}

}

}

[STAThread]

STAThread:Single Thread Apartment Thread.(单一线程单元线程)

[]是用来表示Attributes;

[STAThread]

是一种线程模型,用在程序的入口方法上(在C#和VB.NET里是Main()方法),来指定当前线程的ApartmentState 是STA。用在其他方法上不产生影响。在aspx页面上可以使用AspCompat = "true" 来达到同样的效果。这个属性只在 Com Interop 有用,如果全部是 managed code 则无用。简单的说法:[STAThread]指示应用程序的默认线程模型是单线程单元 (STA)。启动线程模型可设置为单线程单元或多线程单元。如果未对其进行设置,则该线程不被初始化。也就是说如果你用的.NET Framework,并且没有使用COM Interop,一般不需要这个Attribute。其它的还有MTA(多线程套间)、Free Thread(自由线程)。

[STAThread] attribute指示应用程序的 COM 线程模型是单线程单元。

而于此对应的多线程单元则是 [MTAThread] (多线程单元线程)

COM 线程模型只适用于使用 COM interop 的应用程序。如果将此属性应用到不使用 COM interop 的应用程序,将没有任何效果。

COM 线程模型可设置为单线程单元或多线程单元。如果应用程序线程实际调用了 COM 组件,则仅为 COM interop 初始化该线程。如果没有使用 COM interop,则不初始化该线程。

线程数无法修改的,这个在CPU设计出来的时候已经固定下来了。

超线程是英特尔所研发的一种技术,于2002年发布。超线程的英文是HT技术,全名为Hyper-Threading,中文又名超线程。

超线程技术原先只应用于Xeon处理器中,当时称为Super-Threading。之后陆续应用在Pentium 4中,将技术主流化。

通过超线程技术,英特尔成为第一家公司实现在一个实体处理器中,提供两个逻辑线程。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11095885.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存