C # Задача завершения обратного вызова исключений - PullRequest
0 голосов
/ 29 октября 2018

У меня есть приложение WindowsForms, которое я хотел бы использовать для выполнения асинхронной задачи. У меня есть несколько проблем:

Как вы справляетесь с ContinueWith, чтобы вы могли запустить продолжение в форме?

Что делать, если Форма может быть закрыта до завершения Задачи?

private void buttonGo_Click(object sender, EventArgs e)
{
    val t = RunSomethingAsync().ContinueWith( p => { OnRunDone(); });
}

private void OnRunDone()
{
    Invoke( p => { button.Enabled = true; });
}
  1. Является ли приведенный выше код правильным способом сделать это?
  2. Что происходит в приведенном выше коде, если Форма закрывается до завершения Задачи?
  3. Что если RunSomethingAsync генерирует необработанное исключение?

1 Ответ

0 голосов
/ 02 ноября 2018

Думаю, я понял это. Я просто не совсем понял, как работает await / async. Решение:

private async void buttonGo_Click(object sender, EventArgs e)
{
    await RunSomethingAsync();
    OnTaskComplete();
}

private void OnTaskComplete()
{
    label1.Text = "Done";
}

private async Task RunSomethingAsync()
{
     await Task.Delay(1000);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...