Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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# loadoperation completed事件何时触发?_C#_Events - Fatal编程技术网

C# loadoperation completed事件何时触发?

C# loadoperation completed事件何时触发?,c#,events,C#,Events,类DomainContext具有方法Invoke,该方法返回InvokeOperation的实例 我们经常可以看到下一个代码 InvokeOperation op = domainConextInstance.Invoke(...); op.Completed +={...}; 我的第一个想法是——它不应该起作用:毕竟,事件发生的时间可能比我们订阅它的时间更早 我做了一个实验 InvokeOperation op = domainConextInstance.Invoke(...); Thre

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

InvokeOperation op = domainConextInstance.Invoke(...);
op.Completed +={...};
我的第一个想法是——它不应该起作用:毕竟,事件发生的时间可能比我们订阅它的时间更早

我做了一个实验

InvokeOperation op = domainConextInstance.Invoke(...);
Thread.Sleep(5000); //or 25000
op.Completed +={...};
但是我发现这段代码工作正常,但是如何呢? 你能给我解释一下吗


这个构造使用的是什么模式?

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


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

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

您可以通过使用诸如dotPeek之类的disassemler工具检查System.ServiceModel.DomainServices.Client.dll中的OperationBase(调用操作的基类)来验证这一点