gpt4 book ai didi

c# - API请求WaitingForActivation "Not yet computed"错误

转载 作者:太空狗 更新时间:2023-10-29 22:21:37 36 4
gpt4 key购买 nike

我使用的 Poloniex C# API 代码来自:https://github.com/Jojatekok/PoloniexApi.Net

在我的控制台应用程序上,获取余额的请求正在运行,我调用 API 并返回余额,但在我的 Windows 窗体应用程序上,它没有等待余额:

Id = 14, Status = WaitingForActivation, Method = "{null}", Result = "{Not yet computed}"

使用此代码时:

PoloniexClient polo_client { get; set; }

private void Main(){
polo_client = new PoloniexClient(ApiKeys.PublicKey, ApiKeys.PrivateKey);
var balance_task = getLatestWalletAmounts();
balance_task.Wait();

// doesn't get past here on my Forms app

if (balance_task.IsCompleted){
// gets to here on my Console app
}
}

// get wallet and startup amounts
async Task<IDictionary<string, Jojatekok.PoloniexAPI.WalletTools.IBalance>> getLatestWalletAmounts()
{
// get wallet coin list
return await polo_client.Wallet.GetBalancesAsync();
}

它与我的控制台应用程序的代码完全相同,但在表单应用程序上任务没有完成,而在控制台应用程序上它正在完成,我正在返回:

Id = 3, Status = RanToCompletion, Method = "{null}", Result = "System.Collections.Generic.Dictionary`2[System.String,Jojatekok.PoloniexAPI.WalletTools.IBalance]"

关于为什么相同的请求没有在我的表单应用程序上完成但它在我的控制台应用程序上有任何提示吗?我正在使用在我的控制台和表单应用程序中引用的完全相同的 Poloniex C# 项目来与 API 交互。

两个项目中的 API 公钥相同,两个项目中的 API 私钥相同。

最佳答案

你不能像这样混合异步和同步代码。通过调用 .Wait,UI 线程会卡住等待任务完成,但任务本质上是在尝试“调用”UI 线程,因此它无法完成。结果:死锁。

You can see more information about the basic problem here.

一个选项,作为创可贴,是在 await polo_client.Wallet.GetBalancesAsync() 上使用 ConfigureAwait(false)称呼;这将覆盖尝试返回到 UI 线程的默认行为。 (请注意,这意味着您无法在 await 之后访问 UI,因为它将在不同的线程上继续!)

I have written a longer piece here about bringing async code into the core of a UI application.

关于c# - API请求WaitingForActivation "Not yet computed"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37129427/

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