Я написал класс, который проверяет учетную запись POP3, и я хотел бы, чтобы он выполнялся в потоке, отличном от потока пользовательского интерфейса.
Для этого я выбрал асинхронный маршрут.
Чтобы получить результат от pop3delegate.BeginInvoke (null, null), мне нужно вызвать EndInvoke, но сделать это в блоках потока пользовательского интерфейса, делая пользовательский интерфейс непригодным для использования.
Я мог бы использовать объект IAsyncResult и проверить свойство IsComplete, но это включает в себя цикл, который проверяет, и это в свою очередь блокирует пользовательский интерфейс.
То, что я ищу, - это способ получить процент выполнения или какой-то статус из класса POP3, который, в свою очередь, обновляет пользовательский интерфейс, а также позволяет использовать его для выполнения других задач. В какой-то момент мне также понадобится вызвать метод EndInvoke, чтобы перехватить любые исключения, выданные рабочему потоку.
Есть предложения?