gpt4 book ai didi

c# - SOAP 客户端没有完成它的工作或者可能没有返回任何东西?

转载 作者:太空宇宙 更新时间:2023-11-03 13:19:59 25 4
gpt4 key购买 nike

我在 Windows RT 中使用 SOAP 客户端,我使用的是 Windows 8.1 操作系统和 VS 2013。无论如何,我想做的只是一个返回一些字符串值的简单任务。

当我尝试执行 await - async 任务时,它不会返回任何内容,或者它可能只是在寻找客户端时迷失了自己。我找不到问题。

我添加了服务引用,当我在对象浏览器中查看它时似乎没有问题。我不知道为什么会这样?

这是我的代码:

using Namespace.InfoGetter;

private void btn_Click(object sender, RoutedEventArgs e)
{
Info info = GetInfo("en-US");
txtInfo.Text = info.Result.Value;
}

async Task<Info> GetInfo(string culture)
{
InfoSoapClient client = new InfoSoapClient();
Task<InfoResponse> info = client.GetInfoAsync(culture); <<<<<<<<<<<

Info result = await info;

return result;

}

当调试到达行(我放置 <<<)时,client.GetInfoAsync(culture) 不返回任何内容,方法也在那里结束。怎么办?

最佳答案

由于您的代码示例不准确,我假设发生的情况是您遇到了死锁,因为您在 info.Result 上阻塞,而在 GetInfo 正在尝试将工作编码回您的 UI 线程。

我们将向您的按钮单击事件处理程序添加 async 关键字,并在 GetInfoAsync 上添加 await

试试这个:

private async void btn_Click(object sender, RoutedEventArgs e)
{
Info info = await GetInfoAsync("en-US");
textInfo.Text = info.Value
}

private Task<Info> GetInfoAsync(string culture)
{
InfoSoapClient client = new InfoSoapClient();
return client.GetInfoAsync(culture);
}

请注意,我将 Async 后缀添加到您的 GetInfo 方法以遵循 TAP 约定,并从 GetInfoAsync 中删除了 async 关键字,因为您实际上不需要生成额外的状态机,因为您所做的就是返回结果,而不是对其进行额外的工作。

关于c# - SOAP 客户端没有完成它的工作或者可能没有返回任何东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24671438/

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