1

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

你能解释一下这两种实现有什么区别,什么是最适合使用的?

谢谢。

4

2 回答 2

1

他们都是代表,当您的事件执行需要完成时,它将在您的条件满足时启动事件(例如,这里以防执行达到和调度程序优先级背景达到)它们只是您可以参考的两种不同的实现方式

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

于 2014-11-07T10:20:35.497 回答
1

除了语法之外,两种解决方案之间没有区别。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));
于 2014-11-07T10:44:48.493 回答