2007年08月13日
Control.Invokeの書き方
Control.Invokeの書き方について、ちょっと考察。
これが、C#1.1の頃の書き方。
これが C#2.0になると、
と書ける。さらに、 MethodInvoker という delegateが定義済みなので、
とさらに簡単になる。
しかし、次の書き方がどうしてOKなのかが、はっきりとは分からない。
たぶん、
が、
って書けるのと関係しているんだと思うけど...
誰か教えてくれないかな。
...
そんなことより、
で良いと思うんだけど。これだとエラーになってしまう。
private delegate void MyDelegate();
private void MyDisplay() {
label1.Text = "ほにゃらら";
}
private void Foo(...) {
this.Invoke(new MyDelegate(MyDisplay));
}
これが、C#1.1の頃の書き方。
これが C#2.0になると、
private delegate void MyDelegate();
private void Foo(...) {
this.Invoke(new MyDelegate(delegate {
label1.Text = "ほにゃらら";
}));
}
と書ける。さらに、 MethodInvoker という delegateが定義済みなので、
private void Foo(...) {
this.Invoke(new MethodInvoker(delegate {
label1.Text = "ほにゃらら";
}));
}
とさらに簡単になる。
しかし、次の書き方がどうしてOKなのかが、はっきりとは分からない。
private void Foo(...) {
this.Invoke((MethodInvoker)delegate {
label1.Text = "ほにゃらら";
});
}
たぶん、
button1.Click += new EventHandler(button1_Click);
が、
button1.Click += button1_Click;
って書けるのと関係しているんだと思うけど...
誰か教えてくれないかな。
...
そんなことより、
private void Foo(...) {
this.Invoke(delegate {
label1.Text = "ほにゃらら";
});
}
で良いと思うんだけど。これだとエラーになってしまう。
Posted by gushwell at 21:17│Comments(0)│TrackBack(1)
この記事へのトラックバックURL
http://trackback.blogsys.jp/livedoor/gushwell/51052746
この記事へのトラックバック
C# の匿名メソッドやデリゲートについて。「窓際プログラマーの独り言:Control.Invokeの書き方」への返答。
Re: Control.Invokeの書き方【まじかんと雑記】at 2007年08月14日 12:29