Изменяющиеся цвета кнопок при подключении я сделал. Понравилось. Захотелось, чтобы при нажатии "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") зависает.
П.С. Может это все как-то более рационально можно реализовать?
Kommentare (6)
Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen
Думаю, на момент создания коннектора, терминал еще не получил все данные с сервера. Нужно четко разделить этапы запуска терминала и этап создания коннектора и т.д., можно сделать две кнопки, на запуск (и авторизацию) и подключение к терминалу. Убедиться, что при автоматическом запуске программы, все нужные таблицы создаются. Ну а вообще, ничего хитрого здесь нет, все должно работать.
Вот проект, где при нажатии на кнопку "подключиться" проверяется запущен-ли терминал, если запущен, то подключается, если не запущен, то запускает, авторизуется и подключается к терминалу.
Иван, вы не могли бы пояснить следующий код из урока:
Как Trader узнает где расположен терминал Квик? Почему-то при авторизации(там мы явно указываем путь до терминала) при выполнении Trader.Connect() он забывает, где терминал и выдает Исключение "Не могу найти терминал". Почему без авторизации он не выдает Исключение? Получается при запущенном терминале он знает где тот расположен. Указал явно как в предложенном вами примере путь до терминала в ConnectSafe():
Уже видно, что подключается, но все равно срабатывает Исключение "Не верное значение в ComponentModel"(лексика исключения примерная).
public BaseTrader Trader { get; private set; }
В общем разобрался. Пустяк, а столько времени потратил, чтобы найти проблему... После запуска авторизации в SafeConnection все прекрасно запускалось, только после Trader.Connect() все висло. В Исключении было, что не может найти терминал. Как выяснилось путь до терминала прописывался в MainWindow.xaml.cs в каждом уроке отдельно.
В данном случае путь до терминала нужно указать явно
, где pathFile - путь до терминала. Вот и вся любовь!😀