4

我有一个 WCF Web 服务(不在我的控制之下),它实现了我需要通过 IsOneWay=true + 回调接口访问的功能,其中一种方法通知处理完成。它是这样编写的,因为它最初是为从 GUI 访问而设计的。

但是,我需要从控制台应用程序访问相同的方法以批量使用。目前,我实现这一点的粗略方法是将标志设置为 false,然后在调用 WCF 方法后,我实现了一个带有简短 Thread.Sleep() 调用的 while 循环。这显然有效,但似乎是实现最终结果的一种非常糟糕的方式。

我想知道这样做的正确方法是什么。注意:该服务不在我的控制范围内,并且刚刚通过 IDE 添加了引用,尽管我可以轻松地敲出代码实现等。

4

1 回答 1

4

使用ManualResetEvent等待完成。在服务上调用单向异步方法,然后等待 manualresetevent 对象。在您的回调调用中,Set() 方法将让您的主线程在 WaitOne() 调用后继续执行,如下所示:

var waitHandle = new ManualResetEvent();

yourwcfObject.CallTheOneWayMethod();
waitHandle.WaitOne();


void CallbackMethodRaisedByWCFService()
{
    waitHandle.Set();
}
于 2011-10-11T06:38:03.637 回答