我有一个函数,必须作为STA运行,我想传播它的异常到调用线程。这里是:STA线程异常传播
public void ExceptionBePropagatedThroughHere()
{
Thread thread = new Thread(TheSTAThread);
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
thread.Join();
}
public void MainFunction()
{
try
{
ExceptionBePropagatedThroughHere();
}
catch(Exception e)
{
//will not hit here
}
}
在“MainFunction”上放置STA属性在这里不是一个选项。 我注意到,如果我使用任务,尝试抓住任务加入将传播异常到调用线程,但是我不能指定运行任务作为STA。
问题是如何将例外运行作为STA传播到示例ablove中的“MainFunction”?
在此先感谢。
只将异常对象存储在类字段中。你不能随意创建一个STA线程来保持COM的快乐,你创建的对象必须在同一个线程上创建。在线程上传递消息循环是许多单线程COM服务器所依赖的东西。 – 2011-05-02 23:32:36