gpt4 book ai didi

c# - System.Timers.Timer 需要回到 'Main' 线程

转载 作者:行者123 更新时间:2023-12-02 01:16:23 24 4
gpt4 key购买 nike

我有一个类(称之为“Foo”),它有一个 System.Timers.Timer(称之为“myTimer”)。

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

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

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

我需要回到包含 Foo 方法的线程。

我该如何实现?仅供引用,Foo 的方法位于非 UI 线程中。

最佳答案

如果 Foo 不是 UI 线程并且您需要从不同的线程调用代码在其上执行,您将需要捕获执行 Foo 的同步上下文,然后从其上的计时器调用您的代码。

看看 SynchronizationContext类(class)。您可以 Post (异步)或 Send要在特定的、先前捕获的同步上下文上执行的委托(delegate)。

您可能还想/需要查看 ExecutionContext类(class)。特别是:ExecutionContext.CaptureExecutionContext.Run

关于c# - System.Timers.Timer 需要回到 'Main' 线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10919527/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com