WPF”;DoEvents”:如何实现它
本文关键字:实现 DoEvents WPF 何实现 | 更新日期: 2023-09-27 18:29:28
我发现了"DoEvents"方法的两个实现:
解决方案1:
System.Windows.Application.Current.Dispatcher.Invoke(
System.Windows.Threading.DispatcherPriority.Background,
new System.Threading.ThreadStart(() => { }));
解决方案2:
System.Windows.Application.Current.Dispatcher.Invoke(
System.Windows.Threading.DispatcherPriority.Background,
new System.Action(delegate { }));
你能解释一下这两种实现之间的区别吗?什么是最合适的?
谢谢。
两种解决方案之间除了语法之外没有任何区别。ThreadStart
和Action
都是具有相同声明且只有一个名称不同的委托:
public delegate void ThreadStart();
public delegate void Action();
您也可以创建自己的委托,并以相同的方式使用,例如:
public delegate void MyOwnAction();
...
Application.Current.Dispatcher.Invoke(
DispatcherPriority.Background, new MyOwnAction(() => { }));
你也可以使用特定的方法,而不是匿名的方法:
private void Target()
{
...
}
Application.Current.Dispatcher.Invoke(
DispatcherPriority.Background, new MyOwnAction(Target));
它们都是委托,当您的事件执行需要完成时,它将在满足您的标准时启动事件(例如,如果达到执行和调度程序优先级后台)它们只是两种不同的实现方式,您可以参考
Delegate&C#中的操作
或信息的msdn
http://msdn.microsoft.com/en-us/library/system.threading.threadstart(v=vs.110).aspx
http://msdn.microsoft.com/en-us/library/system.action(v=vs.110).aspx