C# поймать исключения, брошенные изнутри task.run [дублировать]C#

Место общения программистов C#
Ответить
Anonymous
 C# поймать исключения, брошенные изнутри task.run [дублировать]

Сообщение Anonymous »

Как я могу поднять исключение, добавленное внутри await task.run, вне run ()? Главная нить. Task.run (() => {...}) .wait (); Работает так, как я хочу, но, конечно, заставляет пользовательский интерфейс не отвечать, когда Backupdatabase фактически подтверждает базу данных. Я также попробовал с Async BackupDataBase () , который работает как и ожидалось, но это также делает графический интерфейс без ответа.
static void Main(string[] args)
{
try
{
form.PromoteSql().Wait();
Application.Exit();
}
catch (Exception ex)
{
// the exception thrown from `BackupDatabase` doesn't make it into this block
}
}

public async Task PromoteSql()
{
await Task.Run(() =>
{
try
{
BackupDatabase();
}
catch (Exception ex)
{
// This handles any exception thrown by BackupDatabase

// but this is not caught by the catch block in Main:
throw;
}
});
}

public void BackupDatabase()
{
throw new Exception("test"); // obviously the real code backs up a database
}



Подробнее здесь: https://stackoverflow.com/questions/797 ... n-task-run
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»