我们如何在WPF应用程序中进行空闲时间处理?

9
有没有一种在WPF应用程序中执行空闲时间处理的方式,类似于MFC中的OnIdle事件?
3个回答

11

您可以使用普通方式(使用Dispatcher)将任务分派,并使用ApplicationIdleDispatcherPriority,该任务只有在应用处于空闲状态时才会执行。 示例如下:

DispatcherPriority priority = DispatcherPriority.ApplicationIdle;    
Application.Current.Dispatcher.BeginInvoke(priority, action);

我已将代码放在构造函数中,并注意到任务会在我们双击应用程序时立即执行。我想知道,当我的应用程序没有接收到任何事件或消息队列为空时,我应该放置哪些代码来执行。 - Ashish Ashu
如果代码在构造函数中,您将希望派发对象的创建(就像上面的ApplicationIdle优先级一样),因为构造函数总是会立即运行!Dispatcher.BeginInvoke(new Action(CreateMyObject),DispatcherPriority.ApplicationIdle); 这里CreateMyObject是创建对象的方法,Action是委托 - 它可以包括参数,请参见:http://msdn.microsoft.com/en-us/library/018hxwa8.aspx - markmnl


1
一个晚期的备选答案(作为备忘):
System.Windows.Interop.ComponentDispatcher.ThreadIdle += (_, __) =>
{
    Debug.Print("Idle");
};

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接