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

わんくま同盟

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

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


(過去ログ 33 を表示中)
■16360 / )  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 );
と書くこともできます。
返信 編集キー/


管理者用

- Child Tree -