Maksim Chertkov
|
Дата: 04.01.2012
Александр, вдогонку еще один похожий вопрос по запуску. Такой трабл - если запускать терминал из программы с помощью метода QuikTerminal.Launch() событие IsLaunched остается в состоянии false. Но стоит его запустить его с рабочего стола или из проводника, то все ок - событие возвращает true. Подскажите в чем может быть глюк? Не, конечно можно из программы и запуск из проводника сымитировать, просто мож вы знаете в чем дело и удастся это сделать культурно? Система Win7.
|
|
Спасибо:
|
|
|
|
|
Alexander
|
Дата: 04.01.2012
Mach342 Александр, вдогонку еще один похожий вопрос по запуску. Такой трабл - если запускать терминал из программы с помощью метода QuikTerminal.Launch() событие IsLaunched остается в состоянии false. Но стоит его запустить его с рабочего стола или из проводника, то все ок - событие возвращает true. Подскажите в чем может быть глюк? Не, конечно можно из программы и запуск из проводника сымитировать, просто мож вы знаете в чем дело и удастся это сделать культурно? Система Win7. Зачем вам IsLaunched? Посмотрите на SystemProcess и SystemProcess.HasExited под дебагом. Чему они равны?
|
|
Спасибо:
|
|
|
|
|
Maxim K.
|
Дата: 16.01.2012
Здравствуйте ! QuikTerminal.IsConnected выставляется в true, если окно сообщений содержит хотя бы одну (не важно какую) запись. Это утверждение истинно или ложно ? Если ложно, не могли бы вы сказать как Quikterminal узнает, IsConnected он или нет ? Спасибо.
|
|
Спасибо:
|
|
|
|
|
Alexander
|
Дата: 16.01.2012
Maxim K. Здравствуйте ! QuikTerminal.IsConnected выставляется в true, если окно сообщений содержит хотя бы одну (не важно какую) запись. Это утверждение истинно или ложно ? Если ложно, не могли бы вы сказать как Quikterminal узнает, IsConnected он или нет ? Спасибо. Зачем вам QuikTerminal.IsConnected? Используйте QuikTrader.IsConnected Вот для QuikTerminal: Код
public bool IsConnected
{
get { return !StatusBar.GetText().IsEmpty(); }
}
|
|
|
|
|
Alexander
|
Дата: 16.01.2012
Выкину этот метод в 4.1 от греха подальше, он нафиг не нужен.
|
|
Спасибо:
|
|
|
|
|
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 я не понял до сих пор, а то что во втором фрагменте - это лишь мысли о том как это должно быть и не тестилось даже.
|
|
Спасибо:
|
|
|
|