0

下面的代码出了什么问题?我喜欢在压缩完成后启动一个进程并更新 UI。

错误是指定的可执行文件不是此操作系统平台的有效应用程序。

    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();
4

3 回答 3

1
  • 你在windows上运行吗?
  • 7z.exe在系统PATH吗?
  • 文件是7z.exe64 位的,而您的操作系统是 32 位的?
于 2012-04-17T12:28:16.217 回答
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();
于 2012-04-25T11:01:13.597 回答
0

7z 在你的道路上吗?您可以通过psi的EnvironmentVariables属性进行设置

于 2012-04-17T12:29:42.903 回答