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

时间:2012-06-06 17:56:08

标签: c# timer

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

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

在myTimer.Elapsed上我需要使用Foo中的方法。

现在myTimer正在尝试在工作线程上使用Foo的方法,但这不起作用。

我需要回到包含Foo'Methods。

的线程

我如何做到这一点? 仅供参考,Foo的方法属于非UI线程。

1 个答案:

答案 0 :(得分:5)

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

看一下SynchronizationContext课程。您可以Post(异步)或Send委托在特定的,先前捕获的同步上下文中执行。

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