.net - STA,MTA和OLE的噩梦

标签 .net multithreading sta mta

我必须将.NET应用程序作为插件包含到另一个.NET应用程序中。插件界面要求我从模板表单继承。然后,在加载插件时,将表单附加到MDI中。

到目前为止,一切正常,但是每当我注册拖放事件时,都为组合框设置自动完成模式,或者在其他各种情况下,都会遇到以下异常:

...the 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...



主要应用程序在MTA中运行,并且由另一家公司开发,因此我无能为力。

我试图做在STA线程中导致这些异常的事情,但这也不能解决问题。

有没有人遇到过同样的情况?有什么我可以解决的问题吗?

最佳答案

您可以尝试生成新线程并在其上调用0(Coparitiize)(在线程中),并在该线程中运行您的应用程序。
但是,您不会直接在此线程内更新控件,而应在每次UI修改时都使用Control.Invoke。

我不知道这是否一定能奏效,但是您可以尝试一下。

关于.net - STA,MTA和OLE的噩梦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1063181/

相关文章:

multithreading - 微软的公寓类比 (STA, MTA) : Need help understanding it

c# - 在 winforms 组合框中显示枚举值

c# - 自己的窗体边框样式

c# - c# - 如何在第一个和第二个方法之后执行第三个方法

multithreading - PowerBuilder应用程序调用Delphi DLL

c# - 在 C# 中启动 STAThread

c# - WeekNumber 计算 .NET 中的错误?

.net - 嵌入式 WebBrowser 控件拦截水平滚动事件

python - Keras 线程安全吗?