Помогите, пожалуйста, StartDde ругается
Atom Ответить
11.07.2010


Решил перейти с версии 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) { IsFullDdeExport = true };
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() выдается исключение.
Помогите пожалуйста советом!

Теги:


Спасибо:



Поздравляем именинников: Станислав Гайворонский

2 Ответов
Garry

Фотография
Дата: 11.07.2010
Ответить


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

Garry

Фотография
Дата: 11.07.2010
Ответить


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

Автор топика
Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy