C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: Control.BeginInvokeの引数について


(過去ログ 33 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■16359 / inTopicNo.1)  Control.BeginInvokeの引数について
  
□投稿者/ dai (1回)-(2008/04/03(Thu) 15:29:04)

分類:[C#] 

VC# 2008 .NET Framework3.5 フォームアプリケーション

delegate void InvokeMethod(string str);
void ThreadProc()
{
  this.BeginInvoke(new InvokeMethod(this.Hoge), "あいうえお"); <--(a)
  // this.BeginInvoke(new InvokeMethod(this.Hoge), new object[] {"あいうえお"}); <--(b)
}
void Hoge(string str) { }

フォームのLoadイベントでスレッドを開始し、結果をBeginInvokeでUIスレッドに返す処理をしてます。
BeginInvokeの第2引数はMSDNではobject[]となってますが
(a)のように配列じゃなくてもちゃんとHogeで"あいうえお"を受け取る事が出来ます。
これは正しい方法なのでしょうか?
それとも(b)の様に書いた方ががいいのでしょうか?

引用返信 編集キー/
■16360 / inTopicNo.2)  Re[1]: Control.BeginInvokeの引数について
□投稿者/ シャノン (370回)-(2008/04/03(Thu) 15:34:44)
No16359 (dai さん) に返信
> VC# 2008 .NET Framework3.5 フォームアプリケーション
>
> delegate void InvokeMethod(string str);
> void ThreadProc()
> {
> this.BeginInvoke(new InvokeMethod(this.Hoge), "あいうえお"); <--(a)
> // this.BeginInvoke(new InvokeMethod(this.Hoge), new object[] {"あいうえお"}); <--(b)
> }
> void Hoge(string str) { }
>
> フォームのLoadイベントでスレッドを開始し、結果をBeginInvokeでUIスレッドに返す処理をしてます。
> BeginInvokeの第2引数はMSDNではobject[]となってますが
> (a)のように配列じゃなくてもちゃんとHogeで"あいうえお"を受け取る事が出来ます。
> これは正しい方法なのでしょうか?
> それとも(b)の様に書いた方ががいいのでしょうか?

第2引数は params がついていますから、渡す側は可変長引数として、受け取る側は object[] として受け取るものです。
ですから、(a) のような書き方は正当です。
もし Hoge が複数の引数を取るならば、
this.BeginInvoke(new InvokeMethod(this.Hoge), "あいうえお", 1, true );
と書くこともできます。
引用返信 編集キー/
■16362 / inTopicNo.3)  Re[2]: Control.BeginInvokeの引数について
□投稿者/ dai (2回)-(2008/04/03(Thu) 16:20:51)
No16360 (シャノン さん) に返信
> 第2引数は params がついていますから、渡す側は可変長引数として、受け取る側は object[] として受け取るものです。
> ですから、(a) のような書き方は正当です。
> もし Hoge が複数の引数を取るならば、
> this.BeginInvoke(new InvokeMethod(this.Hoge), "あいうえお", 1, true );
> と書くこともできます。

インテリセンスやオンラインのMSDNで見ると確かにparamsが付いてました。
ローカルなMSDNにはparamsが付いてなかったのでちょと混乱してましたがこれで安心して使えます。
ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -