加载操作完成事件何时触发

本文关键字:何时触 事件 操作 加载 | 更新日期: 2023-09-27 17:59:31

DomainContext具有返回InvokeOperation实例的Invoke方法我们经常可以看到下一个代码

InvokeOperation op = domainConextInstance.Invoke(...);
op.Completed +={...};

我的第一个想法是——它不应该起作用:毕竟,事件可能比我们订阅它更早发生。

我做了一个实验

InvokeOperation op = domainConextInstance.Invoke(...);
Thread.Sleep(5000); //or 25000
op.Completed +={...};

但是我发现这个代码是正确的,但是怎么做呢?你能向我解释一下吗?

这个结构使用什么模式?

加载操作完成事件何时触发

如果没有看到DomainContext的任何代码,很难知道,但这听起来像是为Completed事件添加处理程序的代码,如果操作已经完成,则会立即调用该处理程序。

假设您有InvokeOperation的代码,我肯定会查看Completed事件的声明来发现"魔力"。

假设您谈论的是WCF RIA Services SDK,Jon是对的。InvokeOperation具有属性IsComplete。Completed事件的add部分检查此属性。在完成操作的情况下,它不会添加传递的事件处理程序,而是立即调用它。

您可以通过使用像dotPeek这样的dissemler工具检查System.ServiceModel.DomainServices.Client.dll中的OperationBase(InvokeOperation的基类)来验证这一点。