等待在C#控制台应用程序中完成单向WCF调用
我有一个WCF webservice(不在我的控制之下),它实现了我需要通过IsOneWay=true+回调接口访问的功能,回调接口是通知处理完成的方法之一。它是以这种方式编写的,因为它最初是为从GUI访问而设计的 但是,我需要从控制台应用程序访问相同的方法,以便在批处理中使用。目前我实现这一点的粗略方法是将标志设置为false,在调用WCF方法之后,我使用一个简短的Thread.Sleep()调用实现了一个while循环。这显然有效,但似乎是实现最终结果的一种非常糟糕的方式 我想知道这样做的正确方法是什么。注意:该服务不在我的控制范围内,虽然我可以轻松地启动代码实现等,但引用刚刚通过IDE添加。使用等待完成。在服务上调用单向异步方法,然后等待manualresetevent对象。在回调调用中,Set()方法将允许主线程在WaitOne()调用后继续执行,如下所示:等待在C#控制台应用程序中完成单向WCF调用,c#,wcf,thread-sleep,isoneway,C#,Wcf,Thread Sleep,Isoneway,我有一个WCF webservice(不在我的控制之下),它实现了我需要通过IsOneWay=true+回调接口访问的功能,回调接口是通知处理完成的方法之一。它是以这种方式编写的,因为它最初是为从GUI访问而设计的 但是,我需要从控制台应用程序访问相同的方法,以便在批处理中使用。目前我实现这一点的粗略方法是将标志设置为false,在调用WCF方法之后,我使用一个简短的Thread.Sleep()调用实现了一个while循环。这显然有效,但似乎是实现最终结果的一种非常糟糕的方式 我想知道这样做的正
var waitHandle = new ManualResetEvent();
yourwcfObject.CallTheOneWayMethod();
waitHandle.WaitOne();
void CallbackMethodRaisedByWCFService()
{
waitHandle.Set();
}
@匿名者:看看这个。您甚至可以设置超时,以防止应用程序在出现错误时永远等待。