WPF 应用不活动
WPF app inactivity
我希望我的应用程序在空闲时执行某些操作。为此,我编写了这段代码,它仅在 DispatcherTimer 间隔小于 30 秒或我的应用未处于活动状态时才能正常工作 window.
static DispatcherTimer mIdle;
public static void HandleWithTimeout(int timeout, Action handler)
{
InputManager.Current.PreProcessInput += delegate(object sender, PreProcessInputEventArgs args)
{
mIdle.IsEnabled = false;
mIdle.IsEnabled = true;
};
mIdle = new DispatcherTimer
{
Interval = TimeSpan.FromSeconds(timeout),
IsEnabled = true
};
mIdle.Tick += delegate { handler(); };
}
那么在应用程序处于活动状态的情况下我如何才能使它工作window,为什么当超时 >=30 秒时它不能正常工作?
我找到了答案:相反
InputManager.Current.PreProcessInput += delegate(object sender, PreProcessInputEventArgs args)
{
mIdle.IsEnabled = false;
mIdle.IsEnabled = true;
};
我写了
InputManager.Current.PreNotifyInput += delegate
{
mIdle.IsEnabled = false;
mIdle.IsEnabled = true;
};
以下是 PreProcessInput
、PreNotifyInput
和其他 InputManager evnet 之间的区别:
https://msdn.microsoft.com/en-us/library/system.windows.input.inputmanager(v=vs.110).aspx
我希望我的应用程序在空闲时执行某些操作。为此,我编写了这段代码,它仅在 DispatcherTimer 间隔小于 30 秒或我的应用未处于活动状态时才能正常工作 window.
static DispatcherTimer mIdle;
public static void HandleWithTimeout(int timeout, Action handler)
{
InputManager.Current.PreProcessInput += delegate(object sender, PreProcessInputEventArgs args)
{
mIdle.IsEnabled = false;
mIdle.IsEnabled = true;
};
mIdle = new DispatcherTimer
{
Interval = TimeSpan.FromSeconds(timeout),
IsEnabled = true
};
mIdle.Tick += delegate { handler(); };
}
那么在应用程序处于活动状态的情况下我如何才能使它工作window,为什么当超时 >=30 秒时它不能正常工作?
我找到了答案:相反
InputManager.Current.PreProcessInput += delegate(object sender, PreProcessInputEventArgs args)
{
mIdle.IsEnabled = false;
mIdle.IsEnabled = true;
};
我写了
InputManager.Current.PreNotifyInput += delegate
{
mIdle.IsEnabled = false;
mIdle.IsEnabled = true;
};
以下是 PreProcessInput
、PreNotifyInput
和其他 InputManager evnet 之间的区别:
https://msdn.microsoft.com/en-us/library/system.windows.input.inputmanager(v=vs.110).aspx