QuikTerminal.Login exception
Atom Ответить
30.11.2011


Собственно теперь вываливается следующее:
"Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена."
Насколько помню, до 4.0.6 было нормально.

Теги:


Спасибо:




29 Ответов
< 1 2 
Maxim K.

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


То есть если терминал не подключен к серверу, мы создаем трейдера и пишем trader.Connect(), потом смотрим trader.IsConnected - он должен быть false. Если же терминал подключен, то при таких же условиях trader.IsConnected будет true. Так ?
Спасибо:

Maxim K.

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


Alexander Mukhanchikov Перейти


Зачем вам QuikTerminal.IsConnected?

Я уже писал, но повторюсь:
Роботу периодически необходимо запускать другие квики, помимо одного основного, к которому он всегда подключен и с которого получает все необходимые данные. после запуска квика, необходимо его подключить. И вот тут возникает проблема: В этих квиках, по мимо робота, могут еще и люди работать, но на других компьютерах. В квике есть три сервера, и какой из них свободен заранее не известно. Сейчас я сделал так: перебираю все возможные сервера и остаюсь на том, к которму первым подключились. Сделал так:
Код

                            foreach (var ipEndPoint in adresses)
                            {
                                terminal.Login(login, password, ipEndPoint);
                                while (terminal.GetMessages() == null) ;
                                var msg = terminal.GetMessages();
                                if (!(msg.Last().Contains("error") || msg.Last().Contains("уже")))
                                {
                                    break;
                                }
             
                            }


Вы предлагаете сделать так:

Код

                            foreach (var ipEndPoint in adresses)
                            {
                                terminal.Login(login, password, ipEndPoint);
                                var trader = new QuikTrader{Path = path, DdeServer = "ANOTHERDDESERVER", DllName="TRANS2QUIK1.DLL"}; 
                                bool f = false;
                                trader.ConnectionError+=error=>{f=true;};
                                trader.Connected+=()=>{f=true; };
                                trader.Connect();      
                                while(!f);  
                                if(trader.IsConnected)break; 
                            }

Или что-то наподобии. Я правильно понял ?
Спасибо:

Alexander

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


QuikTerminal.IsConnected не используется ни в первом, ни во втором участке кода
Спасибо:

Maxim K.

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


Да, я в курсе, потому что он не совсем адекватно работает на мой взгляд - в случае если сервер занят и подключиться не удалось, он будет выставлен в true, хотя долден быть false. первый фрагмент кода - это кривой костыль, временно приделанный чтобы хоть как то работало. Как использовать QuikTrader.IsConnected я не понял до сих пор, а то что во втором фрагменте - это лишь мысли о том как это должно быть и не тестилось даже.
Спасибо:
< 1 2 

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

loading
clippy