繁体   English   中英

使用BackgroundWorker进行错误处理

[英]error handling with BackgroundWorker

我知道,您可以在RunWorkerCompleted处理程序中处理BackgroundWorker错误,就像在下一个代码中一样

var worker = new BackgroundWorker();
worker.DoWork += (sender, e) => 
    { 
        throw new InvalidOperationException("oh shiznit!"); 
    };
worker.RunWorkerCompleted += (sender, e) =>
    {
        if(e.Error != null)
        {
            MessageBox.Show("There was an error! " + e.Error.ToString());
        }
    };
worker.RunWorkerAsync();

但我的问题是我仍然收到一条消息:错误已在用户代码中排除在线

 throw new InvalidOperationException("oh shiznit!"); 

我该如何解决这个问题?

您收到它是因为您附加了调试器。 尝试在没有调试器的情况下启动应用程序:不会触发异常,并且当worker完成操作时会显示MessageBox。

我无法重现错误。 以下工作正常:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        var worker = new BackgroundWorker();
        worker.DoWork += (s, evt) =>
        {
            throw new InvalidOperationException("oops");
        };
        worker.RunWorkerCompleted += (s, evt) =>
        {
            if (evt.Error != null)
            {
                MessageBox.Show(evt.Error.Message);
            }
        };
        worker.RunWorkerAsync();
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM