это мой вопрос:
Как я могу обработать тайм-аут при выполнении метода, сценарий следующий:
У меня есть приложение Windows Service для C # .Net framework 4.0. Я добавил ссылку на внешнюю COM-сборку (определенного программного обеспечения определенной компании). В этой сборке я намеревался обработать некоторую информацию о стороннем программном обеспечении в моей службе Windows и повторять эту задачу каждые X минут (определяется пользователем). Это хорошо работает в идеальном сценарии, проблема в том, что у стороннего программного обеспечения есть некоторые проблемы, эта сборка просто не отвечает, и моя служба Windows застревает при выполнении без ответа, например, это код этого выполнения:
var calObj = new CAL.Object(CalOperatins.SendNoSavingChanges);
//this SYNC execution method sometimes get stuck and
//the rest of the program just doesn't executes
calObj.TerminateUserSession();
log.Log4Text(string.Format("Service cycle ended, waiting {0} for next execution.",paramTime));
}
Как я уже упоминал в комментариях к коду, выполнение TerminateUserSession происходит синхронно, и если это программное обеспечение испытывает некоторую проблему, мой сервис застревает там и метод Log4Text ( и все, что ниже) не выполняется.
Есть ли способ, которым я могу обработать тайм-аут для этого TerminateUserSession выполнения метода, учитывая, что это внешняя сборка, и я не могу изменить этот код? (да, я могу понять, что это неправильно запрограммировано из-за отсутствия тайм-аута)
Заранее спасибо.