無名関数を使用して新しいスレッドを作成しようとしていますが、エラーが発生し続けます。ここに私のコードがあります:
New Thread(Function()
// Do something here
End Function).Start
ここに私が得るエラーがあります:
新着:
構文エラー
終了機能:
「関数の終了」の前には、一致する「関数」が必要です。
これを行うには2つの方法があります。
AddressOf
演算子を使用して、既存のメソッドに
Sub MyBackgroundThread()
Console.WriteLine("Hullo")
End Sub
そして、スレッドを作成して開始します。
Dim thread As New Thread(AddressOf MyBackgroundThread)
thread.Start()
または、ラムダ関数として。
Dim thread as New Thread(
Sub()
Console.WriteLine("Hullo")
End Sub
)
thread.Start()
VBでは lambda expression と呼ばれます。構文はすべて間違っています。New演算子を使用するには、実際にThread型の変数を宣言する必要があります。また、作成するラムダは、Threadクラスコンストラクターに渡す引数の有効な代替である必要があります。いずれも値を返すデリゲートを受け取らないため、FunctionではなくSubを使用する必要があります。ランダムな例:
Imports System.Threading
Module Module1
Sub Main()
Dim t As New Thread(Sub()
Console.WriteLine("hello thread")
End Sub)
t.Start()
t.Join()
Console.ReadLine()
End Sub
End Module
呼び出されるものは、サブではなく関数でなければなりません。
単一行(値を返す必要があります):
Dim worker As New Thread(New ThreadStart(Function() 42))
複数行:
Dim worker As New Thread(New ThreadStart(Function()
' Do something here
End Function))