c# - 事件重入问题。同一事件同时运行
问题描述
我有一个事件在很多情况下会触发很多次,但我希望在运行下一个事件之前完成一个事件。
我正在尝试创建一个加密货币交易机器人。有问题的事件是private void CoinInformation_OnNewTradeEvent(object sender, AggregateTradeEventArgs e)
由于该单个事件多次触发,我一直认为它将以同步方式执行,当一个事件运行时,下一个事件将在完成之前运行。我试着放锁,但意识到这不起作用。
private void CoinInformation_OnNewTradeEvent(object sender, AggregateTradeEventArgs e)
{
lock(myObject)
{
try
{
Decimal currentTradePrice = e.Trade.Price;
UpdateSMA(currentTradePrice);
TryBuy(currentTradePrice);
TrySell(currentTradePrice);
TryStopLoss(currentTradePrice);
}
catch
{
return;
}
}
}
解决方案
抱歉,我的 TryBuy 和 TrySell 似乎是异步的,我没有等待它们,因此有重新进入。
推荐阅读
- highcharts - Highchart:如果两个气泡在气泡图中相交或彼此靠近,则不会显示气泡标题
- kubernetes - 如何挂载 kubernetes.io/dockerconfigjson
- filesize - du 摘要不等于元素的总和
- html - 如何以角度设置嵌套组件的样式?
- python - 按索引有效地将多行添加到文件中
- neo4j - Neo4j Cypher 查询解释相同,但仅针对一个生成警告
- powershell - 试图获取不同服务器上指定进程的cpu使用率
- node.js - 上传图片时,Nodejs 内存填得太快了 ~10MB
- ruby-on-rails - 用户退出时如何重定向到主页(root)?
- python - Omnet ++简单模块的C ++代码中python嵌入代码中的分段错误错误