加载操作完成事件何时触发
本文关键字:何时触 事件 操作 加载 | 更新日期: 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的基类)来验证这一点。