可以从BackgroundWorker重新启动应用程序吗?

时间:2016-05-11 14:45:09

标签: vb.net

我有一个VB.NET应用程序,它有一个BackgroundWorker,可以用MySQL数据库进行操作;如果BGW崩溃我想保存日志并重启应用程序;所以可以做这样的事情吗?

Catch ex As Exception    
    WriteRTBLog(ex.Message, Color.Red)
    WriteRTBLog(ex.StackTrace, Color.DarkRed)
    Application.Restart()
End Try

此外,如果我重新启动应用程序,将引发FormClosing事件? 因为我在关闭之前使用该事件保存日志。

1 个答案:

答案 0 :(得分:0)

如果调用Application.Restart,则会从同一个线程中调出FormClosing事件。因此,如果您正在访问任何UI元素,则需要调用Form.Invoke以安全地访问其属性。

要回答你的问题,是的,会调用FormClosing。另外,我会将这些WriteRTBLog调用包装在自己的Try / Catch中,这样如果它们失败,你的Application.Restart调用仍然会被执行。