InvalidOperationException - Шлюз не инициализирован
Начинаю изучать S#. Есть такой код:
Code
public MainWindow() {
InitializeComponent();
.....
Trader = new QuikTrader(Path.Text);
Trader.NewSecurities += securities => this.GuiAsync(() => editSecurity.ItemsSource = Trader.Securities);
Trader.NewTrades += trades => this.GuiAsync(() => Trades.AddRange(trades));
Trader.ReConnectionSettings.ConnectionRestored += () => this.GuiAsync(() => MessageBox.Show(this, "Connection has been restored."));
// подписываемся на событие разрыва соединения
Trader.ConnectionError += error => this.GuiAsync( () => MessageBox.Show( this, error.ToString() ) );
Trader.ProcessDataError += ex => System.Diagnostics.Debug.WriteLine(ex);
Trader.Connected += () => this.GuiAsync(() => btnDDE.isEnabled = true); // Gjckt соединения активируем кнопку "Start DDE"
Trader.Connect();
_candleManager = new CandleManager(Trader);
}
private void StartDde_Click() { // Когда нажали на кнопку "Start DDE"
Trader.StartExport();
}
private void StartStrategy_Click(object sender, RoutedEventArgs e) { // Когда нажали на кнопку "Start strateg"
StartStrategy();
}
private void StartStrategy() {
if (_strategy == null) {
var timeFrame = TimeSpan.FromSeconds(280);
_strategy = new FirstStrategy(_candleManager, SelectedSecurity, timeFrame);
var guiListener = new GuiLogListener();
_logManager.Listeners.Add(guiListener);
_logManager.Sources.Add(_strategy);
_strategy.Start();
}
_isStrategyStarted = true;
btnStartStrategy.Content = "Stop strategy";
}
Код класса FirstStrategy:
Code
class FirstStrategy : Strategy {
private readonly CandleManager _candleManager;
private readonly Strategy _tradingStrategy;
private Candle lastCandle;
public FirstStrategy(CandleManager candleManager, Security security, TimeSpan timeFrame) {
// Задаем интсрумент по которому должна работать стратегия
this.Security = security;
// Создаем менеджер свечек
_candleManager = candleManager;
// Регистрируем нужный таймфрейм для свечек
_candleManager.RegisterTimeFrameCandles(this.Security, timeFrame);
// Подписываемся на событие окончания свечки
_candleManager.CandlesFinished += OnCandleFinished;
}
protected override void OnStarting() {
........
// Вызываем родительский метод
base.OnStarting(); // Вот здесь получаю исключение InvalidOperationException Шлюз не инициализирован
}
protected void OnCandleFinished(CandleToken token, IEnumerable<Candle> candles) {
lastCandle = candles.Last();
this.AddInfoLog("Последнее время {0}. Цена закрытия {1}", new object[] { lastCandle.Time, lastCandle.ClosePrice } );
}
}
Сначало нажимаю на кнопку "Start DDE", через 1 минуту нажимаем на кнопку "Start strateg" и
получаю исключение InvalidOperationException с сообщением "Шлюз не инициализирован" в методе OnStarting() при вызове base.OnStarting().
Подскажите пожалуйста, что я делаю не так?