C#“必须先将当前线程设置为单个线程单元(STA)模式方可进行OLE调用”异常解决方案
2017-10-11 17:04
645 查看
异常信息:
异常详细信息: System.Threading.ThreadStateException: 必须先将当前线程设置为单个线程单元(STA)模式方可进行 OLE 调用。
解决方案:
现有一函数,控制台、web直接调用会触发该异常
改为通过STA线程调用:
必须先将当前线程设置为单个线程单元(STA)模式方可进行 OLE 调用。
说明:执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。异常详细信息: System.Threading.ThreadStateException: 必须先将当前线程设置为单个线程单元(STA)模式方可进行 OLE 调用。
解决方案:
现有一函数,控制台、web直接调用会触发该异常
/// <summary> /// 复制文本到剪切板 /// </summary> [STAThread] public static void SetClipboard1(string text) { System.Windows.Clipboard.SetText(text); }
改为通过STA线程调用:
/// <summary> /// 复制文本到剪切板 /// </summary> public static void SetClipboard2(string text) { Thread th = new Thread(new ThreadStart(delegate() { SetClipboard1(text); })); th.TrySetApartmentState(ApartmentState.STA); th.Start(); th.Join(); }
相关文章推荐
- 选择目录,选择文件夹的COM组件问题。在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式。请确保您的 Main 函数带有 STAThreadAttribute 标记。 只有将调试器附加到该进程才会引发此异常。
- 在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式。请确保您的 Main 函数带有 STAThreadAttribute 标记。 只有将调试器附加到该进程才会引发此异常
- 在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式。请确保您的 Main 函数带有 STAThreadAttribute 标记。 只有将调试器附加到该进程才会引发此异常
- 遇到的问题-----------c#在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式
- 遇到的问题-----------c#在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式
- 在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式
- ex = {"在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式。 解决办法
- 在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式,请确保您的Main函数带有STAThreadAttribute标记。 多线程操作剪切板的时候。
- 在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式
- 在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式,请确保您的Main函数带有STAThreadAttribute标记。
- 在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式
- 在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式。请确保您的 Main 函数带有 STAThreadAttribute 标记。
- 其他信息:在可以调用OLE之前,必须将当前线程设置为单线程单元(STA)模式
- 在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式。请确保您的 Main 函数带有 STAThreadAttr
- 在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式
- 在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式
- 在可以调用OLE之前,必须将当前线程设置为单线程单元(STA)模式,请确保您的Main函数带有STAThreadAttribute
- 在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式
- (转)在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式,请确保您的Main函数带有STAThreadAttribute标记。
- 在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式