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...」ですが、実際のテストを実行するメソッドからのイベント ログはどこにも表示されません。
アプリケーションも凍結されていません。まだまだ使えます。
私は自分が間違っていることについて途方に暮れています。アドバイスがあれば大歓迎です。