首页 > 解决方案 > 事件重入问题。同一事件同时运行

问题描述

我有一个事件在很多情况下会触发很多次,但我希望在运行下一个事件之前完成一个事件。

我正在尝试创建一个加密货币交易机器人。有问题的事件是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;
            }


        }

    }

标签: c#asynchronousevents

解决方案


抱歉,我的 TryBuy 和 TrySell 似乎是异步的,我没有等待它们,因此有重新进入。


推荐阅读