我有一个事件处理程序(来自计时器),每 x 毫秒重绘一次。
尽管使用 async void 方法(显然)不是最佳实践,但对于事件处理程序显然不是这样,因为开发人员不会从其他方法调用它们。
我的问题是我注意到当处理器的工作量很大(后台任务等)时,会重复调用重绘。
我已经能够通过设置一个标志(布尔变量)来指示绘图已完成(并且除非此标志为真,否则不调用我的 draw 方法)来解决这个问题,但我听说 Windows 商店应用程序可能会被拒绝轮询关于异步活动。
private void _timer_Tick(object sender, object e)
{
if (drawingFinished == true)
{
drawingFinished = false;
// drawingFinished set to true at the end of this method
DrawVideoFrame();
}
}
此外,您不能将锁添加到异步方法。
这里的最佳做法是什么?我该怎么办?