Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在使用DispatcherObjectInvoker.Invoke时,有没有办法确保一个方法一个接一个地执行_C#_Wpf - Fatal编程技术网

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?它只是
调度程序
?什么是
调度程序对象查询程序
?它只是调度员吗?