← Zurück

Помогите, пожалуйста, StartDde ругается

Решил перейти с версии 1.8 на 2.1 но при старте DDE выдается исключение: "Нет информации о главном окне Quik.Возможно, было неуспешное подключение." При этом примеры из 2.1 работают. Verifer только ошибку о колонке Статус в таблице инструментов, что она должна имет индекс 4. Но при этом примеры то работают, а точно такой же код у меня в проекте не работает. Может где-то что-то упустил, не знаю куда и смотреть. Ссылки все из проекта удалил, библиотеки тоже все заменил, все ошибки поправил. Вот код кнопки подключения.

private void button1_Click(object sender, EventArgs e) { if (!_isConnected) { if (globalsett1.quickpath.IsEmpty()) MessageBox.Show("Путь к Quik не указан"); else { if (this.Trader == null) { // создаем шлюз

                   try
                    {
                        this.Trader = new

QuikTrader(globalsett1.quickpath) ; var columns = this.Trader.SecuritiesTable.Columns;

columns[columns.IndexOf(DdeSecurityColumns.LastTradeTime)] = DdeSecurityColumns.LastChangeTime;

columns.Add(DdeSecurityColumns.MinStepPrice);

                   this.Trader.NewSecurities += securities =>

treeView1.BeginInvoke((Action)(()=> { tree_sec_add(securities); tree_view_refresh(); }));

                   this.Trader.SecuritiesChanged += securities =>

dataGridView1.BeginInvoke((Action)(() => { grid_refresh(); })); // создаем менеджер переподключения (будет автоматически соединяться // каждые 10 секунд, если шлюз потеряется связь с сервером) _reConnectionManager = new ReConnectionManager(this.Trader, new Range<TimeSpan>[0], TimeSpan.FromSeconds(10)); _reConnectionManager.ConnectionRestored += () => { MessageBox.Show("Соединение восстановлено"); //Thread.Sleep(20 * 1000); this.Trader.Reconnect(); StartDde(); //this.Trader.IsAsyncMode = true;

                   };
                    this.Trader.ConnectionError += error =>

MessageBox.Show("Соединение с Quik потеряно, предпринимается попытка перподключения"); this.Trader.Connect(); StartDde(); //this.Trader.IsAsyncMode = true; // возводим флаг, что соединение установлено (происходит автоматически при создании шлюза) _isConnected = true; this.button1.Text = "Отключиться"; } catch (Exception a) { MessageBox.Show(a.Message.ToString()); this.Trader.Dispose(); this.Trader = null; } } else

                   try
                    {

                       this.Trader.Connect();
                        //this.Trader.IsAsyncMode = true;
                        StartDde();
                        _isConnected = true;
                        this.button1.Text = "Отключиться";
                    }
                    catch (Exception b)
                    {
                        MessageBox.Show(b.Message.ToString());
                        this.Trader.Dispose();
                        this.Trader = null;
                    }

           }
        }
        else
        {
            try
            {
                this.Trader.Disconnect();
                StopDde();
                _isConnected = false;
                this.button1.Text = "Соединиться";
            }
            catch (Exception c)
            {
                MessageBox.Show(c.Message.ToString());
                this.Trader.Dispose();
            }
        }
    }

private void StartDde() { _isDdeStarted = true; this.Trader.StartDde(); }

   private void StopDde()
    {
        this.Trader.StopDde();
        _isDdeStarted = false;
    }

При старте StartDde() выдается исключение. Помогите пожалуйста советом!

War dieses Thema hilfreich?

Thema teilen

Kommentare (2)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

Garry
Garry Autor

В дебаргере посмотрел quik соединяется, this.Trader.StartDde(); выдает исключение. При этом этот же quik с этими же настройками стартует DDE, если запускать из примера в 2.1

Garry
Garry Autor

Извиняюсь, не удосужился прочитать соседнюю ветку, из события Connected все нормально работает!