Начала вылетать ошибка при добавлении s#


Начала вылетать ошибка при добавлении s#
Atom
6/2/2011


Здравствуйте.

У меня была программа которая при помощи qpile-скрипта считывала некоторые данные из квика. Работала она стабильно, без сбоев. Недавно появилась необходимость получать информацию по сделкам. В s# привлекло то, что это можно сделать с помощью нескольких строк кода без особых проблем. Написал так:
Code

trader = new QuikTrader(Config.Instance.PathToQuik);

trader.Connect();
trader.Connected += () =>
{
trader.Terminal.StartDde("Мои сделки");
trader.Terminal.StartDde("Заявки");
};

trader.NewMyTrades += trades =>
{

};



Работает хорошо, сделки приходят, но через некоторое время программа вылетает со следующей ошибкой:

Quote:

Имя сбойного приложения: 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



Если убрать эти строчки, то ошибка не вылетает.

В чем может быть проблема ?






Tags:


Thanks:


Mikhail Sukhov

Avatar
Date: 6/2/2011
Reply


Дебаггер Visual Studio спасет отца русской демократии.
Thanks:

Maxim K.

Avatar
Date: 6/2/2011
Reply


Михаил, проблема как раз в том, что студия не перехватывает это исключение. Запускаю Debug, в Отладка->Исключения отмечаю все исключения, но программа просто вылетает с ошибкой, студия никак не реагирует. Не подскажете как еще можно узнать место в котором происходит ошибка ? Судя по коду c000005 это ошибка Access Violation - ошибка доступа при работе с памятью. Но где она возникает я никак не могу понять ....
Thanks:

Mikhail Sukhov

Avatar
Date: 6/2/2011
Reply


Maxim K. Go to
Михаил, проблема как раз в том, что студия не перехватывает это исключение. Запускаю Debug, в Отладка->Исключения отмечаю все исключения, но программа просто вылетает с ошибкой, студия никак не реагирует. Не подскажете как еще можно узнать место в котором происходит ошибка ? Судя по коду c000005 это ошибка Access Violation - ошибка доступа при работе с памятью. Но где она возникает я никак не могу понять ....


Даже Access Violation перехватывается... Может что со студией не так? Или с .NET.
Thanks:

Maxim K.

Avatar
Date: 6/2/2011
Reply


Visual Studio 2010 Ultimate, компьютер новый, систему 5 дней назад поставил (Win7 Pro 32bit), .NET framework 4 стоит. Исключения->Win32Exceptions->Access Violation отмечено. Ошибка вылетает стабильно через ~5 минут работы. Если закомментить trader'а, то ошибка не вылетает.

upd: Common Language Runtime Exceptions -> System.AccessViolationException тоже отмечено.
Thanks:

Mikhail Sukhov

Avatar
Date: 6/2/2011
Reply


Maxim K. Go to
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
Thanks:

Maxim K.

Avatar
Date: 6/3/2011
Reply


Mikhail Sukhov Go to


Попробуйте 3.5

Не помогло (
Thanks:

Иванов Андрей

Avatar
Date: 6/9/2011
Reply


Я б написал в обратную сторону.

trader = new QuikTrader(Config.Instance.PathToQuik);
trader.NewMyTrades += trades =>
{

};
trader.Connected += () =>
{
trader.Terminal.StartDde("Мои сделки");
trader.Terminal.StartDde("Заявки");
};
trader.Connect();

Сначала подписаться на события, потом соединяться.
На месте QuikTrader я б ваш коллбэк с экспортом вообще не вызывал =) Потому что в строке "trader.Connected += () =>..." соединение уже установлено, событие вызвано, кто не подписался до установки соединения, тот не успел.
Thanks:


Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy