Консольное приложение закрывается до выполнения обратного вызова

У меня есть консольное приложение, которое выполняет метод класса (в другом проекте. ). Этот метод асинхронно выполняет 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
}

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

0
задан Diego 17 April 2012 в 20:08
поделиться