我在" 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 { }));
你能解释一下这两种实现之间有什么区别,哪种最适合使用?
感谢。
答案 0 :(得分:1)
他们都是代表,当你的事件执行需要完成时,它会在满足你的标准时启动事件(例如,在达到执行和调度程序优先级背景的情况下) 它们只是您可以参考的两种不同的实现方式
What is the difference between Delegate & Action in 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
答案 1 :(得分: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));