Я приобрел стороннюю библиотеку, которую использую в своем приложении. Мое приложение ссылается на небольшую 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 () только для отладки). Этот улов тоже не срабатывает.
Сейчас я думаю, что единственное решение - создать отдельную программу, которая просто ждет, пока другая закроется, а затем снова откроет ее. Что звучит ужасно ...