我正在编写一个(相当)简单的 C# 应用程序,使用 .NET 4 在运行可执行文件之前检查更新。如果网络共享上存在较新版本的 exe,只需将其复制到本地文件夹并启动它。一切都很完美,除了在阅读 File.Copy() 的限制时,我意识到在执行此操作时我将无法显示进度条,而且我看到的所有内容都说使用 CopyFileEx,所以我我试图这样做。
我使用了此处找到的示例代码,它编译得很好(尽管我仍然有点不确定后台工作程序究竟是如何发挥作用的),除非我实际运行应用程序时,CopyFilEx() 方法返回 false,与错误是“参数不正确”。
我的代码(仅相关部分,如果需要我会添加更多)
调用函数:
XCopy.Copy(strServerAppPath + strExeName, strLocalAppPath + strExeName, true, true, (o, pce) =>
{
worker.ReportProgress(pce.ProgressPercentage, strServerAppPath + strExeName);
});
(源路径计算为“C:\test.txt”,目标路径计算为“C:\test\test.txt”)
上面链接的代码中出现错误的地方:
bool result = CopyFileEx(Source, Destination, new CopyProgressRoutine(CopyProgressHandler), IntPtr.Zero, ref IsCancelled, copyFileFlags);
if (!result)
throw new Win32Exception(Marshal.GetLastWin32Error());
在此先感谢您的帮助,我已经为此苦苦挣扎了几个小时...