3

標準のコンソール アプリケーションとして実行される C# ツールを作成しました。プログラムの最後にConsole.Read()、ウィンドウが閉じないようにしていました。これは、1 つを除くすべての同僚の PC で正常に機能します。彼は私の申請書を見たことがありません。やるべきことはすべてやりましたが、その後閉じます。すべての PC で WinXP を実行します。何か考えはありますか?

私は最終的に何も含まないtry-catch-finallyを実装しましたConsole.Read()

編集:いくつかのコードを追加しました

Console.SetWindowSize(125, 40);
CopyToolBase ctb = null;
try
{
    DateTime startTime = DateTime.Now;
    TimeSpan duration;

    ctb = CopyToolBase.GetInstance(Defines.configPath);
    if (null == ctb)
    {
        throw new KopiertoolException();
    }

    if (null == ctb.GetNewestVersion())
    {
        throw new KopiertoolException();
    }

    if (!ctb.CheckCopy())
    {
        throw new KopiertoolException();
    }

    if (!ctb.CopyAndUnzip())
    {
        throw new KopiertoolException();
    }

    duration = DateTime.Now.Subtract(startTime);

    ctb.PrintSuccess("xxxxxxxx");
    ctb.PrintInfo("Gesamtdauer: " + ((duration.Hours == 0) ? "" : string.Format("{0:00} Std ", duration.Hours)) + string.Format("{0:00} Min {1:00} Sek", duration.Minutes, duration.Seconds));

    startTime = DateTime.Now;

    if (!ctb.StartTask())
    {
        throw new KopiertoolException();
    }

    duration = DateTime.Now.Subtract(startTime);

    if (duration.Minutes > 1)
    {
        ctb.PrintInfo("Dauer: " + ((duration.Hours == 0) ? "" : string.Format("{0:00} Std ", duration.Hours)) + string.Format("{0:00} Min {1:00} Sek", duration.Minutes, duration.Seconds));
    }
}
catch (KopiertoolException)
{
    ctb.WriteToLog();
}
catch (Exception ex)
{
    if (ctb == null)
    {
        Console.WriteLine("xxxxxxxxx");
        Console.WriteLine(ex.ToString());
    }
    else
    {
        ctb.PrintError("xxxxxxxxx");
        ctb.PrintError(ex.ToString());
        ctb.WriteToLog();
    }
}            
finally
{
    Console.Read();
}
4

1 に答える 1

0

クラスDLLのどのセクションでも、インポートされたメソッド (または外部ライブラリ) を使用していますか?CopyToolBase

その場合、コードのどこかで破損状態の例外がスローされている可能性があり、通常の try/catch ブロックではキャッチされないため、マネージ コードがそれを処理できず、例外が発生する可能性があります。プロセスを終了するしかありません。

状況を説明するリンクは次のとおりです。

私はそれがロングショットであることを知っていますが、すべてのベースをカバーするだけだと思っていました

于 2012-09-18T16:07:35.127 に答える