|
■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 ); と書くこともできます。
|