System.Timers.Timer需要返回'Main'线程

jpi*_*olo 2 c# timer

我有一个Class(称为'Foo'),它有一个System.Timers.Timer(称之为'myTimer').

Foo包装非托管非线程安全代码.

在myTimer.Elapsed我需要在Foo中使用Methods.

现在myTimer尝试在工作线程上使用Foo的方法,这是行不通的.

我需要回到包含Foo'Methods的线程.

我该如何做到这一点?仅供参考,Foo的方法是在非UI线程中.

Mik*_*scu 5

如果Foo不是UI线程,并且您需要调用代码从另一个线程执行它,您将需要捕获执行Foo的同步上下文,然后从其上调用您的代码.

看一下SynchronizationContext类.您可以发布(异步)或发送委托以在先前捕获的特定上下文中执行.

您可能还需要/需要查看ExecutionContext类.特别是:ExecutionContext.CaptureExecutionContext.Run