我有一個存在監視器類用於檢測用戶活動/非活動狀態。這個類在它的啓動方法,要求在應用程序啓動一個定時器:異步等待不起作用定時器
public class PresenceMonitor
{
private volatile bool _running;
private Timer _timer;
private readonly TimeSpan _presenceCheckInterval = TimeSpan.FromMinutes(1);
public PresenceMonitor()
{
}
public void Start()
{
// Start the timer
_timer = new Timer(_ =>
{
Check();
}, null, TimeSpan.Zero, _presenceCheckInterval);
}
private void Check()
{
if (_running)
{
return;
}
_running = true;
// Dowork
}
}
「檢查」的方法是每隔一分鐘後被解僱。這一段代碼工作正常,但現在我的「做工作」的方法已成爲異步等待,所以我不得不這種存在監控類更改爲這樣的事情:
public class PresenceMonitor
{
private volatile bool _running;
private Timer _timer;
private readonly TimeSpan _presenceCheckInterval = TimeSpan.FromMinutes(1);
public PresenceMonitor()
{
}
public void Start()
{
// Start the timer
var timer = new System.Threading.Timer(async (e) =>
{
await CheckAsync();
}, null, TimeSpan.Zero, _presenceCheckInterval);
}
private async Task CheckAsync()
{
if (_running)
{
return;
}
_running = true;
// await DoworkAsync
}
}
不幸「CheckAsync」方法現在被解僱了一次而不是每分鐘。你能告訴我我在做什麼錯在這裏調用async等待定期後?
有沒有正確的方法來做同樣的事情?
這個問題解決了嗎? – Nkosi