如何解决取消订阅股票代码更新时,带有 Binance.Net 的 Dot Net Core C# Winforms 应用程序挂起
我在 winforms 应用程序中使用 Binance.Net API,当我取消订阅股票代码更新时遇到问题。应用程序挂起。这是我的 C# 代码:
private void btnScan_Click(object sender,EventArgs e)
{
BinanceClient.SetDefaultOptions(new BinanceClientOptions()
{
ApiCredentials = new ApiCredentials(getBinanceApiKey(),getBinanceSecretKey()),LogVerbosity = LogVerbosity.None,LogWriters = new List<TextWriter> { Console.Out }
});
BinanceSocketClient.SetDefaultOptions(new BinanceSocketClientOptions()
{
ApiCredentials = new ApiCredentials(getBinanceApiKey(),LogWriters = new List<TextWriter> { Console.Out }
});
if (client != null) client.dispose();
client = new BinanceSocketClient();
decimal minPercent = 0;
Decimal.TryParse(txtMinPercent.Text.Trim(),out minPercent);
if (minPercent == 0)
{
client.dispose();
return;
}
Dictionary<String,decimal> dicPrice = new Dictionary<string,decimal>();
client.Spot.SubscribetoAllBookTickerUpdates(data =>
{
var a = data;
txtScannedSymbol.Invoke((Action)delegate { txtScannedSymbol.Text = a.Symbol; });
if (!dicPrice.ContainsKey(a.Symbol))
{
dicPrice.Add(a.Symbol,a.BestAskPrice);
}
else
{
decimal prevIoUsAsk = dicPrice[a.Symbol];
decimal newAsk = a.BestAskPrice;
if ((newAsk != prevIoUsAsk) && (prevIoUsAsk != 0))
{
decimal evol = newAsk / prevIoUsAsk;
if (evol>(decimal)minPercent)
{
// MessageBox.Show("High volatility on " + a.Symbol);
lstResults.Invoke((Action)delegate { lstResults.Items.Add(DateTime.Now.ToString() + " : " + a.Symbol + " : " + evol.ToString()); });
}
dicPrice[a.Symbol] = a.BestAskPrice;
}
}
});
}
private void btnStopScan_Click(object sender,EventArgs e)
{
if (client != null) client.UnsubscribeAll();
}
当我单击“停止扫描”按钮时会出现问题,因此在 btnStopScan_Click 事件中。
在另一个按钮中,当我使用 SubscribetoBookTickerUpdates 仅订阅一个交易品种更新时,我会使用“client.dispose();”停止订阅称呼。但是当我在使用 SubscribetoAllBookTickerUpdates 时使用相同的技术时它会挂起,即使使用 UnsubscribeAll 方法也会发生相同的行为......
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。