我有一个Class(称为'Foo'),它有一个System.Timers.Timer(称之为'myTimer').
Foo包装非托管非线程安全代码.
在myTimer.Elapsed我需要在Foo中使用Methods.
现在myTimer尝试在工作线程上使用Foo的方法,这是行不通的.
我需要回到包含Foo'Methods的线程.
我该如何做到这一点?仅供参考,Foo的方法是在非UI线程中.
如果Foo不是UI线程,并且您需要调用代码从另一个线程执行它,您将需要捕获执行Foo的同步上下文,然后从其上调用您的代码.
看一下SynchronizationContext类.您可以发布(异步)或发送委托以在先前捕获的特定上下文中执行.
您可能还需要/需要查看ExecutionContext类.特别是:ExecutionContext.Capture和ExecutionContext.Run
| 归档时间: |
|
| 查看次数: |
1489 次 |
| 最近记录: |