2

私はグローバル変数 Program.intReturnVal を持っていますが、これは常に呼び出し元のアプリに戻るとは限りません。

この特定の catch ブロックは、失敗しているものです。正しく機能している他のコードと同じコードがすべて含まれています。someMethod() は、問題がある場合、実際にストアド プロシージャを呼び出しています。

            catch (Exception ex)
            {
                GlobalClass.WriteToTextFile(ErrorLogFile, "Exception Error: someMethod() failed." + Environment.NewLine + "Additional details: " + ex.ToString(), ErrorLogPath);
                Program.intReturnVal = ErrorCode;
                Form.ActiveForm.Close();
            }

この時点での Program.intReturnVal の値は 900 です

    private void Form1_FormClosing(object sender, FormClosedEventArgs e)
    {
        MessageBox.Show("Inside form closing block - " + Program.intReturnVal);

    }

この時点での Program.intReturnVal の値は 900 です

    private void Form1_FormClosed(object sender, FormClosedEventArgs e)
    {
        MessageBox.Show("Inside form closed block - " + Program.intReturnVal);

    }

この時点での Program.intReturnVal の値は 900 です。

今... Program.csページで:

static class Program
{
    public static int intReturnVal;
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static int Main()
    {
        intReturnVal = 900; // Zero is success 900 is error
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        try
        {
            Application.Run(new Form1());
        }
        catch
        {
            intReturnVal = 900;
        }
        MessageBox.Show("Inside Program.cs block " + Program.intReturnVal + " " + intReturnVal);
        return intReturnVal;
    }
}

この時点での Program.intReturnVal の値は 0 です。これを 0 にリセットするのは何ですか? それは Dispose メソッドにありますか?

    protected override void Dispose(bool disposing)
    {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);

    }

フォームの終了メソッドと終了メソッドのパラメーターにエラー コードを追加する必要がありますか? これらの時点で値が 900 であることを既に確認しているので、これはばかげているように思えます。

TIA にお問い合わせください。

4

0 に答える 0