Проблема с запуском дополнительного QUIK
Atom Ответить
23.12.2011


Программа постоянно работает с одним QUIK через QuikTrader,который создается дефолтным способом:
Код

var trader = new QuikTrader(pathToQuik);


Но иногда программа должна запускать еще один Quik и кое-что с ним делать.
Нового QuikTrader создаю так:

Код

var trader = new QuikTrader{ Path = path, DdeServer = "ANOTHERDDESERVER" ,DllName =  "TRANS2QUIK1.DLL"};


На этой строчке программа вылетает с ошибкой:
Элемент с таким ключом уже добавлен.

StackTrace:
Код

в System.Windows.Forms.Control.Invoke(Delegate method, Object[] args)
в NDde.Advanced.DdeContext.DdeThread.Invoke(Delegate method, Object[] args)
в NDde.Advanced.DdeContext.Invoke(Delegate method, Object[] args)
в NDde.Advanced.DdeContext.Invoke(ThreadStart method)
в NDde.Server.DdeServer.Register()
в #=qr_hsCs_GsqoE2Q_e9zDO0kB$h6Pj05TQiQgMRW0YAS8=.#=qVDJVp9ByWTLlSS$iCYv7iIaC5fT2D2I9xdpq2Gk1jFE=.#=qg_B$4XRtEJe2cfb3itmhMw==()
в Ecng.Common.ThreadingHelper.<>c__DisplayClass10.<Thread>b__f()
в System.Threading.ThreadHelper.ThreadStart_Context(Object state)
в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
в System.Threading.ThreadHelper.ThreadStart()</StackTrace><ExceptionString>System.ArgumentException: Элемент с тем же ключом уже был добавлен.
в System.Windows.Forms.Control.MarshaledInvoke(Control caller, Delegate method, Object[] args, Boolean synchronous)
в System.Windows.Forms.Control.Invoke(Delegate method, Object[] args)
в NDde.Advanced.DdeContext.DdeThread.Invoke(Delegate method, Object[] args)
в NDde.Advanced.DdeContext.Invoke(Delegate method, Object[] args)
в NDde.Advanced.DdeContext.Invoke(ThreadStart method)
в NDde.Server.DdeServer.Register()
в #=qr_hsCs_GsqoE2Q_e9zDO0kB$h6Pj05TQiQgMRW0YAS8=.#=qVDJVp9ByWTLlSS$iCYv7iIaC5fT2D2I9xdpq2Gk1jFE=.#=qg_B$4XRtEJe2cfb3itmhMw==()
в Ecng.Common.ThreadingHelper.&amp;lt;&amp;gt;c__DisplayClass10.&amp;lt;Thread&amp;gt;b__f()
в System.Threading.ThreadHelper.ThreadStart_Context(Object state)
в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
в System.Threading.ThreadHelper.ThreadStart()</ExceptionString></Exception></TraceRecord>



Судя по стэктрейсу проблема в DDeServer.Register()

Не подскажите в какую сторону копать ?Версия s# 4.0.8

Теги:


Спасибо:




14 Ответов
Alexander

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


Путь нового квика другой?
Имя дде - другое?
trans2quik - другой?


NDde - сторонняя библиотека кстати
Спасибо:

MCTuTeJ|19951995

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


Сегодня только перешел на новую версию, до этого первый trader создавался как и сейчас, а второй - так:
Код

var trader = new QuikTrader(path,"ANOTHERDDESERVER","TRANS2QUIK1.DLL");

Все имена те же самые, отличаются от используемых в первом, путь к QUIK другой.
Всё работало отлично.
Автор топика
Спасибо:

Alexander

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


Verifier что по второму квику говорит?
Спасибо:

MCTuTeJ|19951995

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


Я, конечно, сейчас посмотрю, но не понимаю, причем там верифер - ведь никакого экспорта я не делаю, обработка внешних транзакций включена.
Автор топика
Спасибо:

Alexander

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


настройки -> вывод по DDE
тут стоит галка нового потока? надо её снять
Спасибо:

MCTuTeJ|19951995

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


Verifer говорит что всё нормально.
Автор топика
Спасибо:

MCTuTeJ|19951995

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


Нет, галка не стоит.
Автор топика
Спасибо:

MCTuTeJ|19951995

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


Попробовал поменять QUIK'и местами - сначала подключаться ко второму, а потом запускать первый - то же самое, такая же ошибка.
Автор топика
Спасибо:

MCTuTeJ|19951995

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


При создании первого trader'а указал название DDE сервера, отличное от stocksharp - всё заработало. Видимо надо вникать при инициализации через фигурные скобки всё-таки сначала создавался объект с дефолтным именем DDE сервера - stocksharp - при этом вылетала ошибка, так как первый QUIK работал с таким же сервером.
Автор топика
Спасибо: PavelS

MCTuTeJ|19951995

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


И еще вопрос - оставили ли Вы поддержку РПС заявок ?
Автор топика
Спасибо:

Alexander

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


MCTuTeJ|19951995 Перейти
И еще вопрос - оставили ли Вы поддержку РПС заявок ?


не убирали.
Спасибо: MCTuTeJ|19951995

MCTuTeJ|19951995

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


Alexander Mukhanchikov Перейти
MCTuTeJ|19951995 Перейти
И еще вопрос - оставили ли Вы поддержку РПС заявок ?


не убирали.

Разобрался, затупил я немного (
Автор топика
Спасибо:

PavelS

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


Столкнулся с той же проблемой с двумя квиками. После того как поменял имя первого DDE-сервера на отличное от STOCKSHARP, все заработало. Благодарю MCTuTeJ|19951995 за подсказку.
Версия 4.0.23
Спасибо:

Alexander

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


PavelS Перейти
Столкнулся с той же проблемой с двумя квиками. После того как поменял имя первого DDE-сервера на отличное от STOCKSHARP, все заработало. Благодарю MCTuTeJ|19951995 за подсказку.
Версия 4.0.23


Переходите на 4.1.3, там всё автоматом делается, менять ничего не надо.
Спасибо:


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

loading
clippy