■83359 |
Re[1]: これらの引数で呼び出されるアクセス可能なNewがないため・・ |
□投稿者/ shu -(2017/03/19(Sun) 01:54:07)
| ■No83350 (惹起 さん) に返信 > > > Dim sss As Task = New Task(AddressOf aaa, bbb) > sss.Start() > > > というようなマルチスレッドの処理を書きたいのですが > Option Strict On無しだとエラーなく実行できるのに > Option Strict Onを有りにすると、 > > これらの引数で呼び出されるアクセス可能なNewがないため、オーバーロードに解決に失敗しました > > というエラーが出ます。
Taskのコンストラクタのうち引数が2つのものは https://msdn.microsoft.com/ja-jp/library/system.threading.tasks.task(v=vs.110).aspx にあるように Task(Action, CancellationToken) Task(Action, TaskCreationOptions) Task(Action<Object>, Object) のどれかです。 提示されたコードで aaa,bbbがこの型にマッチしていないとこのエラーが発生します。
> > > Dim menuFile As ToolStripMenuItem = New ToolStripMenuItem("test") > menuFile.DropDownItems.Add(New ToolStripMenuItem(GetBuildDateTime)) > Me.MenuStrip1.Items.Add(menuFile) > > というのでも同じエラーが出ます。 同じようにToolStripMenuItemのコンストラクタで引数1つのものは https://msdn.microsoft.com/ja-jp/library/system.windows.forms.toolstripmenuitem(v=vs.110).aspx にあるように ToolStripMenuItem(String) だけですので GetBuildDateTimeがString型でなければこのエラーが発生します。
> 以下では > > MultiProgram_run = New System.Threading.Thread( _ > New System.Threading.ParameterizedThreadStart(AddressOf Program_runxx)) > > Option Strict Onでは、〜とデリゲート〜間の暗黙的な縮小変換は許可されていません。 > > というエラーが出ます。 https://msdn.microsoft.com/ja-jp/library/system.threading.parameterizedthreadstart(v=vs.110).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-2 にあるようにParameterizedThreadStartはobject型の引数を1つもつSubですのでProgram_runxxがそれに相当していないと思われます。 また、このリンク先にあるようにこの記述は Thread(AddressOf Program_runxx)と書けます。
> > これらのエラーが出ないようにするにはどうしたら良いですか? > 型があうようにしてください。 |
|