У меня есть консольное приложение, которое выполняет метод класса (в другом проекте. ). Этот метод асинхронно выполняет POST для веб-службы (. Это длительная операция продолжительностью 3 минуты )и имеет обратный вызов, который возвращает количество записей, затронутых POST. Тем временем программа продолжает делать другие вещи, которые занимают менее 3 минут, и программа завершает работу до возврата обратного вызова.
В прошлом я использовал ManualResetEvent, как показано ниже, чтобы предотвратить завершение, но в этом случае мой метод находится в другой библиотеке классов, которую я хотел бы сохранить как можно более чистой.
static ManualResetEvent resetEvent = new ManualResetEvent(false)
static void Main()
{
CallAsyncMethod();
// Do other things...
resetEvent.WaitOne(); // Blocks until "set"
}
void AsyncMethodCallback()
{
// Do processing on completion...
resetEvent.Set(); // Allow the program to exit
}
Я был бы признателен за любую помощь в создании чистого шаблона для достижения этой цели, не загрязняя вызываемый класс флагами выполнения.