ASP.NET 環境で SignalR を使用して、複数のウィジェットを備えたリアルタイム ダッシュボードを構築しています。すべてのウィジェットがデフォルト データをロードした後、各ウィジェットはそのデータを個別に更新する必要があります。これは、複数のタイマーを使用して、データベースから出てくるデータを更新していることを意味します。
今私の質問は、上記の状況でタイマーを使用する最良の方法は何ですか、そしてそれがスレッドセーフであることを確認するにはどうすればよいですか
これは私が今使っているコードです:
public static void Init(){
Stopwatch.Start();
_timer = new Timer(_ =>
{
if (_updating)
{
return;
}
_updating = true;
try
{
var timeDiffSecs = Stopwatch.Elapsed.TotalSeconds;
Stopwatch.Restart();
if (timeDiffSecs <= 0)
{
return;
}
//DoMyActionForUpdate
}
finally
{
_updating = false;
}
}, null, TimeSpan.FromSeconds(3), TimeSpan.FromSeconds(3));
}