У меня есть метод под названием DoSomething()
, который возвращает object
и занимает много времени. Поэтому я хотел бы использовать async/await, чтобы он запускался в фоновом режиме, в то время как мой графический интерфейс показывает «ждет ответа ...».не может ждать объекта в асинхронном вызове
В моем методе вызова:
Task taskDoSomething = new Task(DoSomethingAsync);
taskDoSomething.Start();
taskDoSomething.Wait();
// continue the program
Мой DoSomethingAsync
метод:
private async void DoSomethingAsync()
{
Object result = await DoSomething();
}
Но я получаю сообщение об ошибке:
Cannot await [ObjectType]
И [ObjectType]
тип объекта У меня есть создал меня. Я просто использовал объект выше, чтобы не путать читателя.
Пожалуйста, дайте мне знать, что я делаю неправильно, и освободили меня от разбросанной обработки BackgroundWorker
.
То, что я хочу, это то, что работает совсем как «BackgroundWorker». Когда пользователь нажимает кнопку, логотип 'wait of response 'должен отображаться до тех пор, пока' DoSomethin() 'не закончит свое задание, а затем появится сообщение о статусе типа' Job is Done! ' – Disasterkid
@Pedram: см. Мое редактирование. –
@JonSkeet Не блокируете ли вы вызов 'task.Result'? – i3arnon