Вы почти никогда не должны иметь тип возврата void
с async / await (есть исключения, но начните с этого).Ваш метод должен вернуть Task
, чтобы у вас было что ждать или проверить состояние завершения.
private async Task LoadSSNs()
{
await Task.Run(() => grdSSNs.DataSource = ICTBLL.GetData(ID));
}
То, как вы определите, завершена ли задача, зависит от того, что вам нужно сделать.Если вам нужно выполнить некоторую работу, когда задача выполняется асинхронно, вы можете сделать это:
var t = LoadSSNs();
// do something while task is running.
t.Wait(); // this is one option.
if (t.Status == TaskStatus.Faulted) { } // handle problems from task.
Если у вас есть больше работы, которую можно выполнить, пока задача завершена, вы можете сделать что-то вроде этого:
while(!t.IsCompleted)
{
// do some other work.
}
Опять же, то, что вы делаете с задачей, зависит от вас;важная часть - вам нужно вернуть ожидаемый Task
из вашего асинхронного метода.