gpt4 book ai didi

c# - 使用 BackgroundWorker 时未捕获异常

转载 作者:太空宇宙 更新时间:2023-11-03 17:13:36 25 4
gpt4 key购买 nike

我有一个带有 BackgroundWorker 的 WPF 窗口。我在此处的 Send() 方法中遇到异常:

private void worker_DoWork(object sender, DoWorkEventArgs e)
{
smtpClient.Send(mail);
}

依次在 Click 事件中为某些按钮调用,如下所示:

private async void SendClickAsync(object sender, RoutedEventArgs e)
{
using (MessageServiceClient client = new MessageServiceClient())
{
try
{
[...]
worker.RunWorkerAsync();

}
catch (Exception ex)
{
MessageBox.Show("Error! Check your sender data!", "!", MessageBoxButton.OK, MessageBoxImage.Error);
[...]
}
}
}

为什么这个异常没有得到处理?当我不是异步执行时(一切都在 SendClickAsync() 方法中),消息框会很好地弹出。

最佳答案

当您调用 worker.RunWorkerAsync() 方法时,您的主线程继续执行并退出 try..catch block 。要处理异常,请使用 RunWorkerCompleted 事件处理程序。 RunWorkerCompletedEventArgs 争论有属性 Error 将包含异常对象:

void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Error != null)
{
MessageBox.Show("Error", "!", MessageBoxButton.OK, MessageBoxImage.Error);
return;
}
}

关于c# - 使用 BackgroundWorker 时未捕获异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13782273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com