API request WaitingForActivation “Not yet computed” error

后端 未结 2 1384
终归单人心
终归单人心 2020-12-30 14:42

I\'m using the Poloniex C# API code from: https://github.com/Jojatekok/PoloniexApi.Net

On my console application the request to get balances is working, i make the A

相关标签:
2条回答
  • 2020-12-30 15:26

    You cannot mix async and synchronous code like this. By calling .Wait, the UI thread is stuck waiting for the task to finish, but the task is essentially trying to "Invoke" on the UI thread, so it cannot finish. Result: deadlock.

    You can see more information about the basic problem here.

    One option, as a band-aid, is to use ConfigureAwait(false) on the await polo_client.Wallet.GetBalancesAsync() call; that will override the default behavior of trying to return to the UI thread. (Note that means you can't access the UI after the await, because it will be continuing on a different thread!)

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

    0 讨论(0)
  • 2020-12-30 15:33

    This looks like a classic async-await deadlock: you have a SynchronizationContext, you await in it (which means the continuation is scheduled to that SynchronizationContext) and then you block that SynchronizationContext by calling Wait(), which leads to deadlock.

    The right solution to not block on async code, your Main should be an async method that returns a Task and awaits balance_task. Another option is to use ConfigureAwait(false) in getLatestWalletAmounts() (and any other "library" method that uses await).

    0 讨论(0)
提交回复
热议问题