ApartmentState.STA】的更多相关文章

需要设置子线程 ApartmentState 为 STA 模式,但 Task 又不能直接设置 ApartmentState,因此需要用 Thread 来封装一下. using System.Threading; using System.Threading.Tasks; public static Task<T> StartSTATask<T>(Func<T> func) { var tcs = new TaskCompletionSource<T>();…
异常: 在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式.请确保您的 Main 函数带有 STAThreadAttribute 标记. 只有将调试器附加到该进程才会引发此异常. 方法1: class Program { /// <summary> /// 图片资料文件同步 /// </summary> /// <param name="args"></param> [STAThread] //加这个属性,创建并进入单…
在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式 转载自:http://blog.163.com/smhily_min/blog/static/75206226201092011444205/     在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式.请确保您的 Main 函数带有 STAThreadAttribute 标记. 只有将调试器附加到该进程才会引发此异常. 程序之前运行正常,我只是在一个事件中定义了做了如下操作,程序抛出此异常 privat…
导入导出功能,在调用ShowDialog时的错误,解决办法如下: WinForm窗体的入口点: /// <summary> /// 应用程序的主入口点. /// </summary> [STAThread] private static void Main(String[] args) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Applicati…
参考资料: http://www.yesky.com/20010207/158097.shtml http://www.ftponline.com/china/XmlFile.aspx?ID=242 http://research.microsoft.com/~chadv/java_com2.htm http://blogs.msdn.com/jfoscoding/archive/2005/04/07/406341.aspx .NET支持两种线程模型:STA和MTA. STA(single th…
今天在做一个需求 就是 客户端的注销重新登录的操作,想必大家很清楚这个逻辑应该怎么去做, 在主线程里面去调用这个注销的方法 然后关闭当前应用域,重新开一个线程 让应用域在上面执行. STA(single threaded apartments).apartment只是一个逻辑上的概念,它可以包含一个或多个线程.一个AppDomain可以包括一个或多个apartment.STA是指该apartment中只能包含一个thread.MTA(multi threaded apartments).指该ap…
关于这类问题网上搜索会有很多解决方案,但基本的意思都相差不大,大致问题出于启用线程时调用类似剪贴板Clipboard.SetDataObject出错,我把我的测试代码展现下: 解决方案:只需将thread.SetApartmentState(ApartmentState.STA);反注释就可以了. 出现的原因: 单元是进程内部具有相同线程访问要求的对象的逻辑容器.同一单元中的所有对象都可以接收从该单元中的任何线程发出的调用..NET Framework 不使用单元,托管对象自己负责以线程安全的方…
1.ApartmentState 指定的单元状态 Thread. 命名空间:   System.Threading程序集:  mscorlib(位于 mscorlib.dll) 成员       成员名称 说明   MTA Thread 将创建并进入一个多线程的单元.   STA Thread 将创建并进入一个单线程单元.   Unknown ApartmentState 未设置属性. 备注   单元是进程内部的对象共享相同的线程访问要求的逻辑容器. 在同一单元中的所有对象可以都接收来自与单元中…
c# Clipboard.SetDataObject(bmp1)  在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式.请确保您的 Main 函数带有 STAThreadAttribute 标记. 只有将调试器附加到该进程才会引发此异常 将 try { //Image bmp1 = Image.FromFile("C:\\Users\\jake\\Desktop\\03.jpeg"); // Clipboard.Clear(); Clipboard.SetDataO…
Add the STAThreadAttribute attribute on the Main method. This attribute is required if your program access OLE related functions, like Clipboard class does. [STAThread] static void Main(string[] args) { } 使用以下方式 var t = new Thread(MyThreadStartMethod…
当Main函数是这样的状态的时候,当打开FolderBrowserDialog控件的时候 ,报错 这里有两种解决办法,第一种,就是把main 上加[STAThread] 第二种是启用一个线程 Thread newThread = new Thread(new ThreadStart(ToOpenBD));//初始化线程 参数是委托  ToOpenBD是方法名字,没有参数            newThread.SetApartmentState(ApartmentState.STA);//设置…
System.Threading.ThreadStateException: 'Current thread must be set to single thread apartment (STA) mode before OLE calls can be made. Ensure that your Main function has STAThreadAttribute marked on it. This exception is only raised if a debugger is…
Process 进程类, // 提供对本地和远程进程的访问,启动/停止本地系统进程 public class Process : Component { public int Id { get; } // 系统生成的进程唯一标识符 public string ProcessName { get; } // 进程名称 public string MachineName { get; } // 运行进程的计算机名称 public ProcessThreadCollection Threads { g…
设置控件的值 /// <summary> /// 根据ID,NAME双重判断并设置值 /// </summary> /// <param name="tagName"></param> /// <param name="id"></param> /// <param name="value"></param> private void SetTxt(s…
Task比Thread耗资源更少,且默认在线程池中. 但是Thread能够设置为STA来执行而Task不能,这对于某些特殊功能很重要,比如WebBrowser控件对象就不能在非单线程单元的线程中new. 将Thread对象对应的线程设置为单线程单元线程的代码为: Thread thd = new Thread(SnapshotMethod); thd.IsBackground = true; // 设置为后台线程 thd.SetApartmentState(ApartmentState.STA)…
如何用WPF画一个心. MainWindow.xaml <Window x:Class="Heart.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft…
本文讨论在.NET中使用进程内COM组件时的公寓模型,以一个示例直观演示STAThread和MTAThread的作用和区别. 1. COM中的公寓 1.1 基本规则 公寓是COM组件的运行环境,日常生活中公寓是用来住人的,COM中的公寓是用来住COM组件的对象的,每个COM对象必须且只能位于一个公寓中:单线程公寓(STA)或多线程公寓(MTA). 每个进程可以有0或多个STA. 每个进程可以有0或1个MTA. 一个线程只能关联到一个公寓.因此所有关联到MTA的线程都是关联到进程唯一的一个MTA.…
 Spire.Pdf 的各种操作总结 简介 试验新产品总是给我带来许多挑战,当然这也是一个引进创新技术的好方法.在这里我要跟大家分享的是使用Spire.Pdf的过程,它是来自E-iceblue公司的轻便PDF程序库. 设计情节 我以前经常没事就搞搞PDF.Spire.Pdf是用C# 写的PDF组件.他们自己声称: pastingSpire.PDF for .NET is a professional PDF component applied to creating, writing, edit…
前一篇文章写到我获取数据的方式不是通过分析HTML获得,而是通过分析请求链接,然后模拟请求方法获取数据,这只是一种方法.而且是在我通过分析HTML获取不到的情况下,曲线救国,参考别人文章实现的.很高兴,我实现了自己获取数据的目标.我以为这样就算结束了.可是,今天又发现了另外一种方法,而且是通过分析HTML实现的,看到它,我感觉太不可思议了,我花了那么多的时间都没有实现,怎么现在又可以了.现在兴趣正浓,赶紧操刀实践一番.于是有了这篇,算是意外之喜吧! 先说明一下实现思路,原来它是通过调用WebBr…
线程池虽然好用,但限制也不少: (1)总觉得默认的 MaxThread 小了一点,每次使用都要手工调大= = (2)任务不能等待完成 (3)任务一旦加入不能取消,甚至不知道是正在排队/正在执行/执行完毕 (4)最恶心的一点,全是 MTAThread,好多COM都不能用.ClipBoard.WebBrowser ... 实在不能忍了,自己写了个“任务池”,模拟线程池的功能.不同点有: (1)没有数量上限,新进的任务不需要排队(但任务太多可能影响系统性能) (2)任务的创建和开始可以分开,也可以创建…
Watin是一个UI自动化测试工具,支持ie/firefox,官方网站:http://watin.org/. 主要有以下特点: 支持主要的html元素,见:http://watin.org/documentation/element-class-mapping-table/ 可以通过多种属性查找html元素 支持ajax站点测试 支持对页面进行截图 支持frames和iframe 支持弹出对话框如alert, confirm, login以及模态对话框等 方便的集成到你的测试工具,如:VS的单元…
我们都知道在WPF里面用多线程打开一个窗口很简单.如下 public void ClickMe(object sender) { Thread newWindowThread = new Thread(new ThreadStart(A)); newWindowThread.SetApartmentState(ApartmentState.STA); newWindowThread.IsBackground = true; newWindowThread.Start(); } public vo…
在多线程编程中,有时候可能需要在单独线程中执行某些操作.例如,调用SaveFileDialog类保存文件.首先,我们在Main方法中创建了一个新线程,并将其指向要执行的委托SaveFileAsyn.在SaveFileAsyn方法中,我们像平时做的一样,声明一个SaveFileDialog的新实例,并调用ShowDialog方法显示文件保存对话框. class Program { static void Main(string[] args) { Thread t = new Thread(Sav…
xp上做的开一个线程 线程中数据以Excel形式保存到指定文件中的程序  放到win7 win8上都不跳出保存的对话框? 解决: 在win7.win8上都要对线程  在线程启动前设置其单元状态.设置为创建进入其单线程单元. Thread threadsave = new Thread(new ThreadStart(savedatatoExcel)); threadsave.SetApartmentState(ApartmentState.STA); //保存窗口在win7上显示时 必须对线程加…
  备忘   using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Windows.Forms; using Fizzler; using Fizzler.Systems; using Fizzler.Systems.HtmlAgilityPack; using Fizzler.Systems.XmlNod…
C#进程操作 转:http://www.cnblogs.com/vienna/p/3560804.html 一.C#关闭word进程  foreach (System.Diagnostics.Process p in System.Diagnostics.Process.GetProcessesByName("WINWORD")) {    p.Kill();} 网上的2种方法:http://www.cnblogs.com/oneisyou/archive/2010/05/20/173…
SplashScreen,就是平时我们说的溅射屏幕,任何一个做过客户端程序的coder应该对它都不陌生,因为它能提升用户体验,让软件看上去更美.SplashScreenForm通常进入程序时是打开,主窗体加载完毕后退出.一般来说,SplashScreenForm比较简洁,窗体的内容只是显示程序主题.版权等信息:复杂些的,可以显示主程序的加载项目情况. 下面是我实现的一个SplashScreen类: using System; using System.Collections.Generic; u…
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; namespace AnfleCrawler.Common { /// <summary> /// more info: http://stackoverflow…
link: http://blog.csdn.net/linghe301/article/details/20900615 2014-03-14 09:20 2686人阅读 评论(6) 收藏 举报  分类:     )  ArcGIS Engine(30)  ST_Geometry(30)  Oracle(106)  性能优化(53)  版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 很多用户经常会有将数据写入ArcSDE地理数据库的操作,也时常会写入效率而烦恼,它们渴望…
本文为 Dennis Gao 原创或翻译技术文章,发表于博客园博客,未经作者本人允许禁止任何形式的转载. NUnit-Console 命令行选项 NUnit-Console 命令行选项列表 指定运行哪些测试用例 运行指定程序集中的所有测试用例 运行指定程序集中指定的测试用例 通过单独的文件来指定运行测试列表 指定多个程序集 指定运行的 Configuration 通过测试类别 Category 来 Include 或 Exclude 测试 控制测试运行 指定 .NET Framework 版本…