我有一个存在监视器类用于检测用户活动/非活动状态。这个类在它的启动方法,要求在应用程序启动一个定时器:异步等待不起作用定时器
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