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 { }));

你能解释一下这两种实现之间的区别吗?什么是最合适的?

谢谢。

WPF”;DoEvents”:如何实现它

两种解决方案之间除了语法之外没有任何区别。ThreadStartAction都是具有相同声明且只有一个名称不同的委托:

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