1
private void button1_Click(object sender, EventArgs e)
{
    this.icon_testLOAD.Visible = true;
    this.icon_testOK.Visible = false;
    this.icon_testBAD.Visible = false;

    this.debug("Test Service Button Clicked");

    rabbitmq_test t = new rabbitmq_test(button_rabbitmq_test);

    this.debug("Calling BeginInvoke on button_rabbitmq_test delegate");
    t.BeginInvoke(null, null);
}

だから私はこのボタンクリックイベントを持っています。最初の 3 行は、アイコンを含む PictureBox のオンとオフを切り替えています。

this.debug() は EventLog.WriteEntry() を呼び出すだけです

button_rabbitmq_test メソッドは次のようになります。

protected void button_rabbitmq_test()
{
    this.debug("Creating new rabbitmq connection factory");
    IConnection connection;
    try
    {
        ConnectionFactory rq_factory = new ConnectionFactory();
        rq_factory.Port = Convert.ToInt16(this.psistats_config.rabbitmq_port);
        rq_factory.HostName = this.psistats_config.rabbitmq_server;
        rq_factory.UserName = this.psistats_config.rabbitmq_username;
        rq_factory.Password = this.psistats_config.rabbitmq_password;
        rq_factory.RequestedConnectionTimeout = 15000;

        this.debug("Creating new rabbitmq connection");
        connection = rq_factory.CreateConnection();

        this.debug("Changing icon to successful");
        rabbitmq_icon_delegate d = new rabbitmq_icon_delegate(this.testOK);
        connection.Close();
        this.test_button.Invoke(d);
    }
    catch (Exception exc)
    {
        if (connection != null)
        {
            connection.Close();
        }

        this.debug("Failed testing the rabbit server");
        this.debug(exc.Message);
        this.debug(exc.StackTrace);

        rabbitmq_icon_delegate d = new rabbitmq_icon_delegate(this.testFailed);
        this.test_button.Invoke(d);
    }
}

このコードは、開発を行っているコンピューターで正常に動作します。メソッドが実行され、イベント ログが期待どおりに読み込まれます。しかし、このアプリケーションを 2 番目のマシンで実行すると、BeginInvoke メソッドはまったく何もしないように見え、その理由がまったくわかりません。

イベント ログに表示される最後のメッセージは「Calling BeginInvoke...」ですが、実際のテストを実行するメソッドからのイベント ログはどこにも表示されません。

アプリケーションも凍結されていません。まだまだ使えます。

私は自分が間違っていることについて途方に暮れています。アドバイスがあれば大歓迎です。

4

1 に答える 1