c# - 部署时Winform应用程序重新启动不起作用
问题描述
一旦发生未处理的异常,我需要重新启动我的应用程序。这是一个 .NET WinForm 应用程序。
[STAThread]
static void Main()
{
try
{
Application.ThreadException += new ThreadExceptionEventHandler(Application_ThreadException);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
catch (SystemException ex)
{
Log.AddEntry(ex.Message);
}
}
static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
{
Console.WriteLine(e.Exception.Message);
Application.Exit();
System.Diagnostics.Process.Start(Environment.CurrentDirectory+"\\Taskman.exe");
}
我故意使用按钮单击引发异常。当我在我的机器上测试发布版本时,它会关闭,然后正常重启。但是当我在生产机器上部署它时,它没有。
任何想法?
谢谢。
解决方案
您应该在退出当前进程之前启动新进程,并确保将正确的路径传递给该Process.Start
方法:
static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
{
Console.WriteLine(e.Exception.Message);
System.Diagnostics.Process.Start(System.Reflection.Assembly.GetExecutingAssembly().Location);
Application.Exit();
}
推荐阅读
- laravel - 如何在 laravel 7 中安装 github 包
- javascript - 从另一个组件传递 useState
- scala - 从案例类生成 Json 模式(播放框架)
- javascript - AJAX URL 中的 AEM Servlet 资源类型
- javascript - 当书从一个书架移动到另一个书架时,它显示 this.props.onUpdateShelf 不是一个函数
- laravel - Laravel,该类存在,但我得到目标类 [PagesController] 不存在
- excel - Excel Web 查询与 MSXML2.XMLHTTP60
- php - 在现有的 Google Drive 文件夹中创建一个空白文件 - V3 - PHP
- ruby-on-rails - omniauth:(microsoft_graph_auth)身份验证失败!invalid_credentials: OAuth2::Error
- javascript - 如何删除 nextjs 中的 404 错误或响应 js?