STAThread和MTAThread

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情
用多线程计算m*n个数的和的程序,这些数保存在txt文档中;
当我设置[STAThread]时 
提示 “不支持一个 STA 线程上针对多个句柄的 WaitAll”
设置为[MTAThread]时 
提示 “在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式”


常见的解释是:

STAThread和MTAThread是COM线程模型

main函数声明是设置为STA是为了避免调用COM组件时出现问题;

不添加COM组件则该属性对程序没有影响;

OLE( Object Linking and Embedding,对象连接与嵌入,简称OLE技术)

定义和实现了一种允许应用程序作为软件“对象”(数据集合和操作数据的函数)彼此进行“连接”的机制,这种连接机制和协议称为组件对象模型(COM)

COM(Component Object Model(COM——组件对象模型))

用来做进程间通讯(Inter-process communication, IPC)以及当作元件式软体开发的平台

而我使用的OpenFIleDialog(类似的有 FolderBrowserDialog)

Winforms的一些shell组件





.NET中STAThread的使用详解 个STA线程模型,在线程内加入了讯息帮浦等等机制,减少开发人员撰写窗口程序的工作量 立即下载

相关推荐

[STAThread]的含义

[STAThread] STAThread:Single     Thread     Apartment Thread.(单一线程单元线程) []是用来表示Attributes; [STAThread] 是一种线程模型,用在程序的入口方法上(在C#VB.NET里是Main()方法),来指定当前线程的ApartmentState 是STA。用在其他方法上不产生影响。在aspx页面...

weixin_33961829的博客 836

C#中[STAThread]的作用

C#的关键字 [STAThread]即 single-threaded apartment 一: 每个Thread都有一个关于ApartmentState的属性,可以把它设置为:STA或者MTA,或者UNKNOWN。 当你想指定工程的启动窗口的时候,你需要在该窗口类中申明一个Main()方法,并为这个方法设置[STAThread]属性。 详细信息,清查阅MSDN中关于ThreadingC...

weixin_33905756的博客 633

C#中的线程以及[STAThread]、COM(Component Object Model)

C#中的线程以及[STAThread]、COM(Component Object Model)

wanganqiqi的博客 2753

[STAThread]语句是什么意思?

[STAThread] 是一种线程模型,用在程序的入口方法上(在C#VB.NET里是Main()方法),来指定当前线程的ApartmentState 是STA。 [STAThread]是声明开始线程用的。 有时候要用一个第三方组件,如果不加[STAThread]的话,组件上有一些功能是无法使用的。加上[STAThread]就可以用了。

lumennaturale的博客 1148

STAThreadMTATHread

http://www.cnblogs.com/huashanlin/archive/2007/07/07/809305.html [STAThread] STAThread:Single     Thread     Apartment Thread.(单一线程单元线程) []是用来表示Attributes; [STAThread] 是一种线程模型,用在程序的入口方法上(在C

yyf_ad的专栏 1515

.NET中STAThreadMTAThread

本文讨论在.NET中使用进程内COM组件时的公寓模型,以一个示例直观演示STAThreadMTAThread的作用区别。 1. COM中的公寓 1.1 基本规则 公寓是COM组件的运行环境,日常生活中公寓是用来住人的,COM中的公寓是用来住COM组件的对象的,每个COM对象必须且只能位于一个公寓中:单线程公寓(STA)或多线程公寓(MTA)。 每个进程可以有0或多个STA。 每个进程...

weixin_30879169的博客 462

STAThread MTAThread

STAThread:singlethreadedapartment 直译过来是:单线程单元套间 MTAThread:multiple threaded apartment 直译过来是:多线程单元套间 差别其实就是这个: 其他线程对STA中的COM对象的访问需要列集(marshal),通过列集,自动实现了多线程访问下的同步。 所有线程对MTA中的COM对象的访问不需要列集,直接...

weixin_30938149的博客 154

【转】 .NET中STAThreadMTAThread

ref:http://blog.csdn.net/dyllove98/article/details/9735955 1 COM中的公寓 本文讨论进程内COM组件。以一个示例直观演示STAThreadMTAThread的作用区别。 1.1 基本规则 公寓是COM组件的运行环境,日常生活中公寓是用来住人的,COM中的公寓是用来住COM组件的对象的,每个COM对象必须且只能位于...

weixin_30902251的博客 166

C#的关键字 [STAThread]

每个Thread都有一个关于ApartmentState的属性,可以把它设置为:STA或者MTA,或者UNKNOWN。 当你想指定工程的启动窗口的时候,你需要在该窗口类中申明一个Main()方法,并为这个方法设置[STAThread]属性。 [STAThread] STAThread:Single     Thread     Apartment Thread.(单一线程单元线程)

jiqiang_paul的专栏 615

[C#]-STAThread 初学习

转自http://blog.sina.com.cn/s/blog_4493d3b50100u6vi.html [STAThread]--Single-Thread Apartment 在C#中用在Main()函数之前,指定当前线程的ApartmentState是STA,用在其他方法上没有作用。 有时根据设计需要,需要同COM进程进行交互,例如使用Windows clipboard。 以下引

白色风信子 1184

[C#]STAThread 初学习

转自http://blog.sina.com.cn/s/blog_4493d3b50100u6vi.html [STAThread]--Single-Thread Apartment 在C#中用在Main()函数之前,指定当前线程的ApartmentState是STA,用在其他方法上没有作用。 有时根据设计需要,需要同COM进程进行交互,例如使用Windows clipboard。 以下引

水果篮子 8739

C# [MTAThread] 在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式 FolderBrowserDialog

[STAThread] attribute指示应用程序的 COM 线程模型是单线程单元 而于此对应的多线程单元则是 [MTAThread] (多线程单元线程) 这是一种线程模型,用在程序的入口方法上(在C#VB.NET里是Main()方法),如果设置了[MTAThread] ,那么在调用如FolderBrowserDialog时就会出现错误,解决方法:额外开启一个新的线程,将新线程单元状态设置为(STA)单线程单元。 System.Threading.Thread s = new System.Threa

qq_42789677的博客 758

c# attribute介绍

C# introduced attributes, which allow you to embed information right into the C# source code. Attributes are placed in square brackets. [STAThreadAttribute] public st

freegodlee的专栏 1973

C#中一些默认的预定义属性

C#中一些默认的预定义属性,见下表: 预定义的属性 有效目标 说明 AttributeUsage Class 指定另一个属性类的有效使用方式 CLSCompliant 全部 指出程序元素是否与CLS兼容 Conditional Method 指出如果没有定义相关联的字符串,编译器就可以忽略对这个方法的任何调用 DllImport Method 指定包含外部方法的实现的DLL位置 STA

su317的专栏 1033

[STAThread]的含义 转载

原文地址http://www.cnblogs.com/huashanlin/archive/2007/07/07/809305.html [STAThread]STAThread:Single Thread Apartment Thread.(单一线程单元线程)[]是用来表示Attributes;[STAThread]是一种线程模型,用在程序的入口方法上(在C#VB.NET里...

weixin_30734435的博客 75
上一篇: 从unsigned 复习数据类型
下一篇: C++ stdafx.h
_shot
博客等级 码龄15年 9粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值