我有一个事件处理程序(来自计时器),每x毫秒重绘一次。检查无效异步方法的完成
尽管使用异步无效方法(显然)不是最佳做法,但事实上,事件处理程序显然不适用,因为开发人员不会从其他方法调用它们。
我的问题是我注意到,当处理器工作负载很重(后台任务等)时,重叠的调用被重做。
我已经能够通过设置一个标志(bool变量)来指示绘图已完成(并且不调用我的绘制方法,除非此标志为真),但我已经听说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();
}
}
此外,您不能将锁添加到异步方法。
这里最好的做法是什么?我应该怎么做呢?
这并不回答你的问题,而是使用布尔标志,你可以简单地缓存任务并检查它是否完成。 DrawVideoFrame究竟做了什么? – 2013-03-23 10:42:36
有趣的想法,pm_2。我认为在返回任务的方法完成之前我无法获得任务。 – micahhoover 2013-03-23 17:22:59
否 - 您可以将任务作为变量创建并稍后在流程中使用。 – 2013-03-24 20:22:35