我想每秒重新计算某个对象的“StrategyState”。我不想为此创建一个计时器,因为同时,我可以从另一个线程访问“StrategyState”属性(另外,对于我的简单问题来说,计时器可能太重了)。我以这种方式自己定义了 StrategyState 类型:
public enum StrategyState
{
OnlyKill,
Working,
ClosingStage1,
ClosingStage2,
Closed
}
我不确定从一个线程写入这样的对象并从另一个线程读取是否是“线程安全的”。
所以我想“延迟更新”我的StrategyState State
领域,就像这样:
....
if ( /* State was not updated for one second or more. */ ) {
RecalculateState()
}
switch (State) {
.... // Work
如何在不增加太多延迟的情况下测试状态未更新一秒或更长时间?
我显然可以创建秒表,但请注意,我需要为不同线程中的不同对象完全更新大约 50 个状态。我不确定是否应该在系统中添加 50 个秒表。可能,最好添加一个 Stopwatch 并共享它,因为我猜 Stopwatch 类可能是线程安全的。
你有什么建议?