C # - Восстановление после исключения из взаимодействия - PullRequest
2 голосов
/ 06 октября 2010

Я приобрел стороннюю библиотеку, которую использую в своем приложении. Мое приложение ссылается на небольшую dll взаимодействия, которая, в свою очередь, вызывает другую dll (не CLI), чтобы сделать свое дело. Поскольку эта библиотека взаимодействует с оборудованием, я бы предположил, что эта библиотека взаимодействует с различными драйверами устройств.

Типичная сигнатура метода из dll взаимодействия выглядит так:

[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime), DispId(0xc9)]
public virtual extern void Send([MarshalAs(UnmanagedType.Struct)] ref object pVal);

У меня все вызовы этой библиотеки обернуты в одну большую попытку catch (Exception). Если что-то пошло не так с отправкой, мне нужно пометить его как неудачный и двигаться дальше. К сожалению, мое приложение будет случайно закрыто без исключения. Что я могу с этим поделать? Эти вызовы уже выполняются в отдельном потоке с помощью Task.Factory.StartNew (), но все приложение просто закрывается. В дополнение к локальному улову try есть еще один, обернутый вокруг вызова StartNew (у меня есть вызов .Wait () только для отладки). Этот улов тоже не срабатывает.

Сейчас я думаю, что единственное решение - создать отдельную программу, которая просто ждет, пока другая закроется, а затем снова откроет ее. Что звучит ужасно ...

1 Ответ

0 голосов
/ 06 октября 2010

Загляните в этот блог . Возможно, вы сможете получить отчет о сбое и, как минимум, посмотреть, какой сбой произошел, и сообщить о нем своему стороннему разработчику.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...