问题描述
我在 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 (将#修改为@)