【发布时间】:2011-08-14 08:31:04
【问题描述】:
我有一个函数,我想每 x 秒调用一次,但我希望它是线程安全的。
我可以在创建计时器时设置此行为吗? (我不介意我使用哪个 .NET 计时器,我只是希望它是线程安全的)。
我知道我可以在我的回调函数中实现锁,但我认为如果它在计时器级别会更优雅。
我的回调函数和环境与 UI 无关。
[编辑 1] 我只是不希望我的回调函数中有多个线程。
[编辑 2] 我想将锁定保持在计时器级别,因为计时器负责何时调用我的回调,而这里有一种特殊情况,我不想调用我的回调函数。所以我认为何时调用是计时器的责任。
【问题讨论】:
-
您没有提供足够的信息...您的函数是否访问程序的任何其他部分访问的任何内容?如果不是,那么它已经是线程安全的(有和没有定时器)......如果是,那么定时器没有线程安全,但你需要使用一些锁等。
-
为什么你想让回调函数完全锁定?
-
您的编辑 2 没有意义:计时器负责按时调用您的函数,您的函数负责正确处理您的共享数据(锁定等) - 时间不能对您的数据负责,您的职能是……
-
计时器本身是线程安全的 - 你的代码可能不是,但给出的信息不足以回答如何使其成为线程安全的。
标签: c# timer thread-safety