【发布时间】:2011-05-02 21:25:52
【问题描述】:
我有一个必须作为 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
}
}
将 STA 属性放在“MainFunction”上不是一个选项。 我注意到如果我使用的是任务,在任务连接上尝试捕获会将异常传播到调用线程,但是我不能将任务指定为 STA。
问题是如何将作为 STA 运行的异常传播到上例中的“MainFunction”?
提前致谢。
【问题讨论】:
-
只需将异常对象存储在类字段中即可。您不能随意创建一个 STA 线程来让 COM 满意,您调用的对象必须在同一个线程上创建。在线程上泵送消息循环是许多单线程 COM 服务器所依赖的其他东西。
标签: c# multithreading exception