gpt4 book ai didi

C# 定时器回调

转载 作者:行者123 更新时间:2023-11-30 19:36:28 29 4
gpt4 key购买 nike

如果我像这样设置一个计时器:

var MyTimer = new Timer(RunTask, AutoEvent, 1000, 2000);

是否保证 RunTask 始终在同一线程上运行?

我所有的测试似乎都表明是这样,但这是保证还是运气?

这非常重要,因为我需要存储持续调用调用的变量,并且我目前正在对它们使用 [ThreadStatic] 属性。

我知道,如果回调使线程保持的时间比计时器延迟的时间长,则计时器将在另一个线程上执行另一个回调;所以我将问题缩小到没有并行运行的情况(我在回调期间阻止了计时器)。

最佳答案

System.Threading.TimerCallback 委托(delegate)允许您将上下文对象传递给回调方法。您可以使用此上下文对象在回调处理程序中传递所需的状态。这样,您在哪个线程上被回调都无关紧要,因为您不需要使用 ThreadStatic。

传递给 Timer 构造函数的 state 参数将传递给回调方法。

关于C# 定时器回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45843016/

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