Здравствуйте.
У меня была программа которая при помощи qpile-скрипта считывала некоторые данные из квика. Работала она стабильно, без сбоев. Недавно появилась необходимость получать информацию по сделкам. В s# привлекло то, что это можно сделать с помощью нескольких строк кода без особых проблем. Написал так:
trader = new QuikTrader(Config.Instance.PathToQuik);
trader.Connect();
trader.Connected += () =>
{
trader.Terminal.StartDde("Мои сделки");
trader.Terminal.StartDde("Заявки");
};
trader.NewMyTrades += trades =>
{
};
Работает хорошо, сделки приходят, но через некоторое время программа вылетает со следующей ошибкой:
Имя сбойного приложения: AccountInfo.vshost.exe, версия: 10.0.30319.1, отметка времени: 0x4ba2084b Имя сбойного модуля: ntdll.dll, версия: 6.1.7600.16695, отметка времени 0x4cc7ab44 Код исключения: 0xc0000005 Смещение ошибки: 0x00051f88 Идентификатор сбойного процесса: 0xd20 Время запуска сбойного приложения: 0x01cc21147b7575f5 Путь сбойного приложения: C:\work\AccountInfo\AccountInfo\bin\Release\AccountInfo.vshost.exe Путь сбойного модуля: C:\Windows\SYSTEM32\ntdll.dll Код отчета: 057c4ea7-8d08-11e0-af33-0025225c84ec
Если убрать эти строчки, то ошибка не вылетает.
В чем может быть проблема ?
Kommentare (7)
Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen
Дебаггер Visual Studio спасет отца русской демократии.
Михаил, проблема как раз в том, что студия не перехватывает это исключение. Запускаю Debug, в Отладка->Исключения отмечаю все исключения, но программа просто вылетает с ошибкой, студия никак не реагирует. Не подскажете как еще можно узнать место в котором происходит ошибка ? Судя по коду c000005 это ошибка Access Violation - ошибка доступа при работе с памятью. Но где она возникает я никак не могу понять ....
Даже Access Violation перехватывается... Может что со студией не так? Или с .NET.
Visual Studio 2010 Ultimate, компьютер новый, систему 5 дней назад поставил (Win7 Pro 32bit), .NET framework 4 стоит. Исключения->Win32Exceptions->Access Violation отмечено. Ошибка вылетает стабильно через ~5 минут работы. Если закомментить trader'а, то ошибка не вылетает.
upd: Common Language Runtime Exceptions -> System.AccessViolationException тоже отмечено.
Попробуйте 3.5
Я б написал в обратную сторону.
Сначала подписаться на события, потом соединяться. На месте QuikTrader я б ваш коллбэк с экспортом вообще не вызывал =) Потому что в строке "trader.Connected += () =>..." соединение уже установлено, событие вызвано, кто не подписался до установки соединения, тот не успел.