0

次のコードで何が問題になったのですか? 圧縮が完了したら、プロセスを開始して 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();
4

3 に答える 3

1
  • Windowsで実行していますか?
  • 7z.exeシステム内にありますPATHか?
  • あなたのOSは32ビットですが、7z.exeファイルは64ビットですか?
于 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 に答える