SajjadKhati
شنبه 22 بهمن 1401, 16:28 عصر
سلام
دوستان ، در async await (و کلا در زمانی که درون نخ جدیدی هستیم) ، مدیریت استثناء ها چجوری هه؟
مقاله زیر را یه نگاه بسیار گذرا کردم و فرضا کدی شبیه اونچه نوشته بود نوشتم اما خطا ، مدیریت نمیشه :
Exception handling (Task Parallel Library) | Microsoft Learn (https://learn.microsoft.com/en-us/dotnet/standard/parallel-programming/exception-handling-task-parallel-library)
C# - What is the best way to catch exception in Task? - Stack Overflow (https://stackoverflow.com/questions/12980712/what-is-the-best-way-to-catch-exception-in-task)
void ExceptionHandler(Task task)
{
MessageBox.Show(task.Exception.Message);
}
private async void MethodAsync()
{
Task fibonacciTask = Task.Factory.StartNew(() => { throw new Exception("Test"); });
//await fibonacciTask.ContinueWith(new Action<Task>(this.ExceptionHandler),
// TaskContinuationOptions.OnlyOnFaulted);
try
{
await fibonacciTask;
}
catch (AggregateException e)
{
MessageBox.Show(e.Message);
}
}
void ExceptionHandler(Task task)
{
MessageBox.Show(task.Exception.Message);
}
private async void MethodAsync()
{
Task fibonacciTask = new Task(() => { throw new Exception("Test"); });
fibonacciTask.ContinueWith(new Action<Task>(this.ExceptionHandler),
TaskContinuationOptions.OnlyOnFaulted);
try
{
fibonacciTask.Start();
await fibonacciTask;
}
catch (AggregateException e)
{
}
}
در کد دوم هم که میگه با پارامتر TaskContinuationOptions.OnlyOnRanToCompletion ئه متد ContinueWith میتونیم مدیریت کنیم ، باز هم فرقی نکرد .
در کد بالا ، بجای await fibonacciTask ، از متد Await هم طبق کد لینک اول گذاشتم ، باز هم فرقی نکرد .
من با .NetFramework 4.6.2 کار میکنم .
الان اونچه در اون لینک ها گفتن ، کار میکنه؟ یا برای من یا برای نسخه ی دات نت فریم وورک هست؟
تشکر
دوستان ، در async await (و کلا در زمانی که درون نخ جدیدی هستیم) ، مدیریت استثناء ها چجوری هه؟
مقاله زیر را یه نگاه بسیار گذرا کردم و فرضا کدی شبیه اونچه نوشته بود نوشتم اما خطا ، مدیریت نمیشه :
Exception handling (Task Parallel Library) | Microsoft Learn (https://learn.microsoft.com/en-us/dotnet/standard/parallel-programming/exception-handling-task-parallel-library)
C# - What is the best way to catch exception in Task? - Stack Overflow (https://stackoverflow.com/questions/12980712/what-is-the-best-way-to-catch-exception-in-task)
void ExceptionHandler(Task task)
{
MessageBox.Show(task.Exception.Message);
}
private async void MethodAsync()
{
Task fibonacciTask = Task.Factory.StartNew(() => { throw new Exception("Test"); });
//await fibonacciTask.ContinueWith(new Action<Task>(this.ExceptionHandler),
// TaskContinuationOptions.OnlyOnFaulted);
try
{
await fibonacciTask;
}
catch (AggregateException e)
{
MessageBox.Show(e.Message);
}
}
void ExceptionHandler(Task task)
{
MessageBox.Show(task.Exception.Message);
}
private async void MethodAsync()
{
Task fibonacciTask = new Task(() => { throw new Exception("Test"); });
fibonacciTask.ContinueWith(new Action<Task>(this.ExceptionHandler),
TaskContinuationOptions.OnlyOnFaulted);
try
{
fibonacciTask.Start();
await fibonacciTask;
}
catch (AggregateException e)
{
}
}
در کد دوم هم که میگه با پارامتر TaskContinuationOptions.OnlyOnRanToCompletion ئه متد ContinueWith میتونیم مدیریت کنیم ، باز هم فرقی نکرد .
در کد بالا ، بجای await fibonacciTask ، از متد Await هم طبق کد لینک اول گذاشتم ، باز هم فرقی نکرد .
من با .NetFramework 4.6.2 کار میکنم .
الان اونچه در اون لینک ها گفتن ، کار میکنه؟ یا برای من یا برای نسخه ی دات نت فریم وورک هست؟
تشکر