博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c# 关于Threading.ApartmentState
阅读量:4465 次
发布时间:2019-06-08

本文共 1703 字,大约阅读时间需要 5 分钟。

今天在做一个需求 就是 客户端的注销重新登录的操作,想必大家很清楚这个逻辑应该怎么去做, 在主线程里面去调用这个注销的方法 然后关闭当前应用域,重新开一个线程 让应用域在上面执行。

STA(single threaded apartments)。apartment只是一个逻辑上的概念,它可以包含一个或多个线程。一个AppDomain可以包括一个或多个apartment。STA是指该apartment中只能包含一个thread。

MTA(multi threaded apartments)。指该apartment中可以包含多个thread。
STA and MTA 之间最大的区别就是MTA 可以在同一个apartment 中使用所有的共享资源并发执行多个线程。 而多个STA虽然可以共享数据,但是不能并发执行线程,存在性能问题。

然后对于COM组件 大家可以查一下这个 他只能在STA上面执行

所以重新登陆的时候 可以参考一下设置单元状态。

private void Cancellation_Click(object sender, EventArgs e)        {            if (MessageBox.Show("是否切换用户登录?", "注销提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly) == DialogResult.OK)            {                if (MessageBox.Show("请确认当前是否采集完成,并放弃本次商品采集", "注销提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly) == DialogResult.OK)                {                    //var t = new System.Threading.Thread(new System.Threading.ThreadStart(() => Program.ProcessStart()));                    //Application.ExitThread();                    //t.Start();                    Application.ExitThread();                    System.Threading.Thread th= new System.Threading.Thread(new System.Threading.ThreadStart(delegate                    {                                              Application.Run(new FrmLogin());                    }));                    th.TrySetApartmentState(System.Threading.ApartmentState.STA);//在这里设置                    th.Start();                }            }        }

关于应用入口那边有属性绑定 可以自行设置

[STAThread]        private static void Main()

 

转载于:https://www.cnblogs.com/wangcl-8645/p/10634929.html

你可能感兴趣的文章
"Hello World!" for the NetBeans IDE
查看>>
AlertDialog弹出退出对话框和图片对话框
查看>>
ASP.NET页面间数据传递的方法
查看>>
函数—参数会变吗
查看>>
Windows 10 v9926 初测
查看>>
Perl单URL爬虫
查看>>
Memcached
查看>>
codeforces 25D
查看>>
多校 2009 2
查看>>
uva 305 Joseph
查看>>
移植rtmpdump(librtmp)到android
查看>>
类查找android中跨项目的数据库操作ContentProvider的使用
查看>>
WCF也可以做聊天程序
查看>>
HDU 4497 素数筛,合数分解
查看>>
一文看懂python主要应用领域或应用场景
查看>>
DC学习(8)综合与优化
查看>>
Python中关于字符串的各种方法
查看>>
SSD S.M.A.R.T
查看>>
X64相关文章
查看>>
代码规范 结对要求
查看>>