gpt4 book ai didi

c# - 等待 C# 控制台应用程序中单向 WCF 调用的完成

转载 作者:太空狗 更新时间:2023-10-30 01:25:06 24 4
gpt4 key购买 nike

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

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

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

最佳答案

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

var waitHandle = new ManualResetEvent();

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


void CallbackMethodRaisedByWCFService()
{
waitHandle.Set();
}

关于c# - 等待 C# 控制台应用程序中单向 WCF 调用的完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7722049/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com