ApartmentState

ApartmentState用来指定 System.Threading.Thread 的单元状态。是一个枚举类型变量。有三个枚举成员。

分别是STA、MTA、Unknown。

STA:    System.Threading.Thread 将创建并进入一个单线程单元

MTA:   System.Threading.Thread 将创建并进入一个多线程单元

Unknown: 尚未设置 System.Threading.Thread.ApartmentState 属性

一个Thread实例之后可以使用SetAppartmentState方法设置线程的单元状态,

每个线程只可以设置一次,若再次设置会抛异常。

在不设置线程的AppartmentState时,默认值是MTA。

STA和MTA的主要区别应该是他们对资源的占用情况:

STA线程都有自己独立的资源,别的线程访问不到,比如winform

MTA可以共用一个资源,ThreadPool就是一个很好的MTA例子

时间: 2024-08-04 03:45:11

ApartmentState的相关文章

winform学习日志(二十三)---------------socket(TCP)发送文件

一:由于在上一个随笔的基础之上拓展的所以直接上代码,客户端: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Net.Sockets; using Sys

消息队列实现订单异步提交

what MSMQ(Microsoft Message Queue),微软消息队列,用于应用程序之间相互通信的一种异步传输模式.应用程序可以分布在同台机器上,也可以分布于互联的网络中的任意位置.基本原理:消息发送者把要发送的消息放入容器,也就是Message(消息),然后保存到系统公用空间的消息队列中(Message Queue)中,本地或互联位置上的消息接收程序再从队列中取出发给它的消息进行处理.消息类型可以是文本,图像,自定义对象等.消息队列分为公共队列和私有队列. why 一.用于进程间的

线程中使用SaveFileDialog不能弹出窗体

在子线程中使用 SaveFileDialog 无法弹出窗体,主要是我们需要用主线程去处理SaveFileDialog , 我们可以将子线程进行如下设置: public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        } private void button1_Click(object sender, EventArgs e)      

C# 线程间不能调用剪切板的问题

最近做一个项目,需要用到线程,而且要用到剪切板,创建了一个子线程之后发现在子线程中剪切板上获取不到数据,当时特别纳闷,上网查资料,最后终于搞定,现将解决方法归纳如下: 第一步: public void btnAutoFocus_Click(object sender,EventArgs e) { Thread myThread = new Thread(msc.AutoFocusArithmetic); //注意,一般启动一个线程的时候没有这句话,但是要操作剪切板的话这句话是必需要加上的,因为剪

Windows Azure服务管理请求验证

安全性考虑与设计,Windows Azure的服务请求必须通过安全认证,验证的方式有两种如下: 1.Authenticate using Azure Active Directory(活动目录验证) Secure requests to the management service can be authenticated by creating an Azure AD application and using the Active Directory Authentication Libra

ASP.NET中进行消息处理(MSMQ) 三

在本文的前两篇文章里对MSMQ的相关知识点进行了介绍,很多阅读过这前两篇文章的朋友都曾问到过这样一些问题:  1.如何把MSMQ应用到实际的项目中去呢?  2.可不可以介绍一个实际的应用实例?  3....... 在前两篇文章里,关于MSMQ常用的技术点基本介绍完毕了,本文主要以MS开源项目PetShop中的MSMQ应用作为案例来介绍MSMQ在实际项目中的应用.在PetShop里,由于系统使用了多线程的专用应用程序来监控消息队列,在进入PetShop应用分析前,我们先来了解下关于多线程和MSMQ

c#抓取动态页面WebBrowser

在ajax横行的年代,很多网页的内容都是动态加载的,而我们的小爬虫抓取的仅仅是web服务器返回给我们的html,这其中就 跳过了js加载的部分,也就是说爬虫抓取的网页是残缺的,不完整的,下面可以看下博客园首页 从首页加载中我们看到,在页面呈现后,还会有5个ajax异步请求,在默认的情况下,爬虫是抓取不到这些ajax生成的内容的, 这时候要想获取就必须调用浏览器的内核引擎来下载这些动态页面,目前内核引擎三足鼎立. Trident: 也就是IE内核,WebBrowser就是基于该内核,但是加载性内比

C# 异步编程Task整理(二)异常捕捉

一.在任务并行库中,如果对任务运行Wait.WaitAny.WaitAll等方法,或者求Result属性,都能捕获到AggregateException异常. 可以将AggregateException异常看做是任务并行库编程中最上层的异常. 在任务中捕获的异常,最终都应该包装到AggregateException中.一个任务并行库异常的简单处理示例如下: static void TestTwo() { Task t1= Task.Factory.StartNew(() => { throw n

怎么提高ArcSDE 写入地理数据库的效率

link: http://blog.csdn.net/linghe301/article/details/20900615 2014-03-14 09:20?2686人阅读?评论(6)?收藏?举报 ?分类: ? ? ArcSDE(193)??ArcGIS Engine(30)??ST_Geometry(30)??Oracle(106)??性能优化(53)? 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 很多用户经常会有将数据写入ArcSDE地理数据库的操作,也时常会写入