【发布时间】:2018-07-24 00:41:40
【问题描述】:
我有一个 C# WinForm 应用程序,它有时需要重新启动。
当它发生时,它会抛出以下错误:
无效的 dll 或未找到 dll! : MyLib.Dll 系统找不到指定的文件。 (HRESULT 异常:0x80070002)
应用关闭并尝试重新启动后弹出此错误。
此外,仅当应用程序安装在 Windows Server 2008 R2 Standard 上并安装了 Microsoft .NET Framework 4.7 时才会发生这种情况。
请求重启应用的代码是:
ProcessStartInfo = new ProcessStartInfo();
Info.Arguments = "/C timeout /T 5 /NOBREAK && \"" +
Application.ExecutablePath + "\"";
Info.WindowStyle = ProcessWindowStyle.Hidden;
Info.CreateNoWindow = true;
Info.FileName = "cmd.exe";
Process.Start(Info);
Application.Exit(0);
MyLib.dll 存在并且被正确引用。
出现错误信息后,如果我手动启动应用程序,它就可以正常工作。
关于这可能导致此错误的任何线索?
【问题讨论】:
-
你知道有一个静态的
Application.Restart()方法吗? -
是的。尝试使用 Application.Restart() 但是当我这样做时,它会抛出一条错误消息,说 App 已经启动。一次只能运行 1 个应用实例。我的想法是它没有完全关闭。
-
所以,我认为原因相同 - 即使延迟 5 秒后,您的应用程序也没有正确关闭。找出为什么会发生这种情况,一切都会好起来的。
-
你设置了 Info.WorkingDirectory 吗?
-
作为一种调试技术,使用Process Monitor 监视用于定位丢失的DLL 的路径。您只需要根据进程名称和文件路径设置一些过滤器。
标签: c#