Изменяющиеся цвета кнопок при подключении я сделал. Понравилось. Захотелось, чтобы при нажатии "Connect" запускался терминал и авторизовывался, если он не запущен. Да так, чтобы логин и пароль были записаны в отдельном фале, а не в коде(пока юзаю Junior для отладки). Сделал. Но вот косяк. Терминал запускается, а передавать значения в StockSharp.WpfConnectionInterface.dll не хочет. Если запускать код на включенном терминале, то все работает. Думал задержки маленькие поставить - не помогают. Нужен взгляд профессионала!)
Как работает запуск и авторизация: По адресу C:\Key_Junior\Key_Junior.txt храню файл Key_Junior.txt(кодировка файла UTF-8 вроде), в котором текст следующего содержания: C:\Program Files\QUIK-Junior\info.exe 61488 ХХХХХХХХХХ , где первая строка адрес нужного Квика, вторая и третья логин и пароль. метод считывает каждую строку и запоминает нужные данные. А потом на их основе запускает терминал.
Прилагаю архивчик, в нем: Из StockSharp.WpfConnectionInterface - InterFace.xaml, InterFace.xaml.cs; Из StockSharp.TraderConnection - SafeConnection.cs; Текстовый файл - Key_Junior.txt.
По отдельности работает. Вместе, на моменте передачи данных из потока(уже появляется надпись "Disconnect") зависает.
П.С. Может это все как-то более рационально можно реализовать?
コメント (6)
ログイン または アカウントを作成, コメントを残すにはログインまたは新規登録してください
Думаю, на момент создания коннектора, терминал еще не получил все данные с сервера. Нужно четко разделить этапы запуска терминала и этап создания коннектора и т.д., можно сделать две кнопки, на запуск (и авторизацию) и подключение к терминалу. Убедиться, что при автоматическом запуске программы, все нужные таблицы создаются. Ну а вообще, ничего хитрого здесь нет, все должно работать.
Вот проект, где при нажатии на кнопку "подключиться" проверяется запущен-ли терминал, если запущен, то подключается, если не запущен, то запускает, авторизуется и подключается к терминалу.
Иван, вы не могли бы пояснить следующий код из урока:
Как Trader узнает где расположен терминал Квик? Почему-то при авторизации(там мы явно указываем путь до терминала) при выполнении Trader.Connect() он забывает, где терминал и выдает Исключение "Не могу найти терминал". Почему без авторизации он не выдает Исключение? Получается при запущенном терминале он знает где тот расположен. Указал явно как в предложенном вами примере путь до терминала в ConnectSafe():
Уже видно, что подключается, но все равно срабатывает Исключение "Не верное значение в ComponentModel"(лексика исключения примерная).
public BaseTrader Trader { get; private set; }
В общем разобрался. Пустяк, а столько времени потратил, чтобы найти проблему... После запуска авторизации в SafeConnection все прекрасно запускалось, только после Trader.Connect() все висло. В Исключении было, что не может найти терминал. Как выяснилось путь до терминала прописывался в MainWindow.xaml.cs в каждом уроке отдельно.
В данном случае путь до терминала нужно указать явно
, где pathFile - путь до терминала. Вот и вся любовь!😀