Допустим, я вызываю какой-то метод веб-службы, который я не контролирую. Этот метод требует много времени для запуска, и тот, кто разрабатывал веб-сервис, не думал включать асинхронную версию.
Каков наилучший способ создания асинхронной оболочки для такого метода в C # / winforms?
В данный момент я использую ThreadPool для запуска метода веб-сервиса, а затем вызываю событие, когда веб-сервис завершается. Как то так.
DoWorkAsync() {
Webservice.LongMethod()
WorkCompleteEvent()
}
Однако это не кажется идеальным. Например, если я пытаюсь изменить элементы управления формы из обработчика событий, я получаю предупреждение о том, что это не делается из другого потока и т. Д.
У кого-нибудь есть еще предложения по решению этой проблемы?