以下代码出了什么问题?我喜欢在comprssion完成后启动一个进程并更新UI。
错误是指定的可执行文件不是此OS平台的有效应用程序。
string sArgs = "a all.zip a.txt b.txt c.txt";
ProcessStartInfo psi = new ProcessStartInfo("7z.exe", sArgs);
psi.UseShellExecute = false;
psi.CreateNoWindow = false;
psi.LoadUserProfile = false;
Process proc = new Process();
Task t1 = new Task(() =>
{
proc = Process.Start(psi);
}
);
button13.Enabled = false;
Task t2 = t1.ContinueWith((antecedent) =>
{
button13.Enabled = true;
}, TaskScheduler.FromCurrentSynchronizationContext()
);
t1.Start();
答案 0 :(得分:1)
7z.exe
中有PATH
吗? 7z.exe
文件是否为64位,而您的操作系统是32位?答案 1 :(得分:1)
只需注意:此代码将立即启用button13,因为您的主要任务不会等待进程退出。这段代码可以解决问题:
string sArgs = "a all.zip a.txt b.txt c.txt";
ProcessStartInfo psi = new ProcessStartInfo("7z.exe", sArgs);
psi.UseShellExecute = false;
psi.CreateNoWindow = false;
psi.LoadUserProfile = false;
Process proc = new Process();
Task t1 = new Task(() =>
{
proc = Process.Start(psi);
proc.WaitForExit();
}
);
button13.Enabled = false;
Task t2 = t1.ContinueWith((antecedent) =>
{
button13.Enabled = true;
}, TaskScheduler.FromCurrentSynchronizationContext()
);
t1.Start();
答案 2 :(得分:0)
你的路径是7z吗?您可以通过psi的EnvironmentVariables属性设置它