Как я могу поднять исключение, добавленное внутри 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