← Zurück

При обращении к IsConnected падение System.NullReferenceException

Добрый день! Программа падает при попытке проверить подключен ли терминал к торгам с исключением типа - "System.NullReferenceException". Это баг?

        private static string _login = "U0111325";
        private static string _pass = "02323";
        private static string _quikPath = @"C:\Program Files\QUIK-Junior_7,10\info.exe";

        static void Main(string[] args)
        {

            ///////////////////////////////////////
            // Запускаем терминал и логинимся если это еще не сделано
            ///////////////////////////////////////

            var quikPath = QuikTerminal.GetDefaultPath();

            if (quikPath.IsEmpty())
            {
                quikPath = _quikPath;
            }

            var terminal = QuikTerminal.Get(quikPath);

            if (!terminal.IsLaunched)
            {
                Console.WriteLine("Запускаем терминал: {0}", quikPath);
                terminal.Launch();
            }

            if (!terminal.IsLaunched)
            {
                Console.WriteLine("Не удалось запустать терминал!");
                Console.ReadKey();

                return;
            }

            if (!terminal.[b]IsConnected[/b])
            {
                Console.WriteLine("Авторезируемся...");
                terminal.Login(_login, _pass);
            }
            if (!terminal.IsConnected)
            {
                Console.WriteLine("Не удалось авторизироваться! Попробуйте авторизироваться вручную.");
                Console.ReadKey();
            }
}

Kommentare (7)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

Константин
Константин Autor

???

Support
Support

Вы используете очень старый пример... Возьмите пример SimpleQuik из последней версии s#

Константин
Константин Autor

Здравствуйте! В SimpleQuik нашел событие:


					// подписываемся на событие разрыва соединения
					Trader.ConnectionError += error =>
					{
					    this.GuiAsync(() => MessageBox.Show(this, error.ToString()));
					    
					};

Но данное событие как японимаю сигнализирует о разрыве соединения программы с терминалом quik. Я же пытаюсь получить данные о том, подключен ли терминал к торгам. Была ситуация когда терминал, по каким то причинам, отключился от сервера и просто ничего не делал. Или другой случай... Если терминал запущен но не подключен к торгам после чего запускается робот и пытается получить данные. Может ли StockSharp узнать подключен ли терминал к торгам или нет, чтоб можно было в случае отсутствия подключения залогиниться и подключиться?

Еще заметил следующее. Событие об успешном восстановлении соединения:


					// подписываемся на событие об успешном восстановлении соединения
					Trader.Restored += () =>
					{
					    this.GuiAsync(() => MessageBox.Show(this, LocalizedStrings.Str2958));
					    
					};

не срабатывало как бы я не пытался его вызвать. То есть все было в подключенном состоянии => закрыл quik => открыл quik => подключился к торгам => событие не сработало. Так же отключил интернет => подключил интернет => quik восстановил подключение => событие тоже не сработало.

Support
Support

Используйте событие MarketTimeChanged, так будет надежнее...

Константин
Константин Autor

Здравствуйте! Честно говоря не понял от чего зависит событие MarketTimeChanged. Написал вот так:

                    QuikTrader.MarketTimeChanged += span => { Console.WriteLine(span);};

На консоль выводится период в милисекундах в нескончаемом потоке. Разрываю связь с сервером в квике, но поток продолжается... В справке не совсем понятно пояснено про данное событие. Вообщем я сделал свое событие которое реагируе на свойство QuikTerminal.ServerTime. Если null то событе говорит что квик не подключен. Как только появляется время сервера в квике то событе сигнализирует что квик подключен.

P.S. Про событие MarketTimeChanged тоже хочется узнать. На что именно оно реагирует.

Support
Support

Уточню этот вопрос..

Support
Support

В итоге... В s# нет штатных средств контроля соединения с торговым сервером...