C# 在使用DispatcherObjectInvoker.Invoke时,有没有办法确保一个方法一个接一个地执行
有没有办法确保第二条语句在第一条语句之后执行C# 在使用DispatcherObjectInvoker.Invoke时,有没有办法确保一个方法一个接一个地执行,c#,wpf,C#,Wpf,有没有办法确保第二条语句在第一条语句之后执行 DispatcherObjectInvoker.Invoke(_layouts, () => _layouts.RaiseEvent(new LayoutEventArgs( MainScreen.ChangedLayoutEvent, this))); DispatcherObjectInvoker.Invoke(_layouts, Grid.Refresh); 我正
DispatcherObjectInvoker.Invoke(_layouts,
() =>
_layouts.RaiseEvent(new LayoutEventArgs(
MainScreen.ChangedLayoutEvent,
this)));
DispatcherObjectInvoker.Invoke(_layouts, Grid.Refresh);
我正在访问第一个语句中涉及的网格。网格的刷新仅在80%的情况下有效。很明显,我在这里有一个竞赛条件。为什么不让它们都成为同一个动作的一部分呢
DispatcherObjectInvoker.Invoke(_layouts, () =>
{
_layouts.RaiseEvent(new LayoutEventArgs(MainScreen.ChangedLayoutEvent,
this));
Grid.Refresh();
});
为什么不让它们都成为同一行动的一部分
DispatcherObjectInvoker.Invoke(_layouts, () =>
{
_layouts.RaiseEvent(new LayoutEventArgs(MainScreen.ChangedLayoutEvent,
this));
Grid.Refresh();
});
不确定什么是
DispatcherObjectInvoker
,但我假设它是Dispatcher
或其他东西的包装器
如果是,如果调用Invoke()
,则是阻塞调用。因此,您的第二次通话保证在第一次通话之后
但是,如果您想让这些调用成为异步调用,则应该使用BeginInvoke
。DispatcherPriority
参数有助于确保对相同优先级的调用顺序相同。因此,如果\u layouts
引用了DispatcherPriority.Loaded
优先级(或任何其他优先级),则保证调用的顺序相同
检查。不确定什么是
DispatcherObjectInvoker
,但我假设它是Dispatcher
或其他东西的包装器
如果是,如果调用Invoke()
,则是阻塞调用。因此,您的第二次通话保证在第一次通话之后
但是,如果您想让这些调用成为异步调用,则应该使用BeginInvoke
。DispatcherPriority
参数有助于确保对相同优先级的调用顺序相同。因此,如果\u layouts
引用了DispatcherPriority.Loaded
优先级(或任何其他优先级),则保证调用的顺序相同
检查。什么是DispatcherObjectInvoker?它只是
调度程序
?什么是调度程序对象查询程序
?它只是调度员吗?