c# - 无法等待转换的方法调用 - 语法错误
问题描述
我正在尝试 await SubscribeToKlineUpdatesAsync
,它正在从IExchangeClient
to投射BinanceSpotClient
,但它不允许我这样做。出现以下错误消息:
当前上下文中不存在名称“等待”
这样做的正确语法是什么?
public class BinanceSpotClient : IExchangeClient
{
...
public async Task<CallResult<UpdateSubscription>> SubscribeToKlineUpdatesAsync(string symbol, TimeFrame timeFrame, Action<IBinanceStreamKlineData> callback)
{
return await _socketClient.Spot.SubscribeToKlineUpdatesAsync(symbol, timeFrame.ToKlineInterval(), callback);
}
}
public class LiveTradeManager : ITradeManager
{
private static readonly ILog _logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private readonly IExchangeClient _exchangeClient;
private readonly TradeOptions _tradeOptions;
public LiveTradeManager(IExchangeClient exchangeClient, TradeOptions tradeOptions)
{
_exchangeClient = exchangeClient;
_tradeOptions = tradeOptions;
}
public void Run()
{
try
{
var strategy = StrategyUtils.GetStrategyByName("RsiStrategy");
var result = await (_exchangeClient as BinanceSpotClient).SubscribeToKlineUpdatesAsync(_tradeOptions.Pair, strategy.TimeFrame, data => // the error appears here
{
});
if (result.Success)
{
result.Data.ConnectionLost += () =>
{
_logger.Error("Connection lost.");
};
result.Data.ConnectionRestored += (e) =>
{
_logger.Info("Connection was restored.");
};
}
}
catch (Exception ex)
{
_logger.Error($"{ex.Message} | Stack trace: {ex.StackTrace}");
}
}
}
解决方案
将方法的签名更改Run
为异步并返回 Task (很可能ITradeManager
也需要更改):
public async Task Run()
{
// you can use await here
}
推荐阅读
- swift - 获取视频数组的缩略图
- visual-studio-code - 并行安装 Visual Studio Code (vscode) 和 Visual Studio Code Insiders (vscode Insiders):修改标准应用
- import - 边缘数据未完全加载到 Neptune(通过 Python 和 Gremlin)
- codeigniter-3 - 我可以在 CodeIgniter Controller 中编写单个方法来处理 GET 和 POST 登录表单吗?
- c# - 如何根据租户动态更改资源路径(我们根据主机名确定租户)?
- java - 如何使用 cassandra java 驱动程序(3.6 版)在 Cassandra 访问器接口中传递分页状态?
- angular - 找不到名称“许多”-升级到 TypeScript 3.1.6
- c# - 在C#中计算数组元素的频率
- algorithm - 用交易费买股票?
- css - 仅为元素设置样式位于特定 div 内