匿名関数を使用して新しいスレッドを作成しようとしていますが、エラーが発生し続けます。これが私のコードです:
New Thread(Function()
'Do something here
End Function).Start
私が得るエラーは次のとおりです。
新しい:
構文エラー
終了機能:
「EndFunction」の前には、一致する「Function」が必要です。
匿名関数を使用して新しいスレッドを作成しようとしていますが、エラーが発生し続けます。これが私のコードです:
New Thread(Function()
'Do something here
End Function).Start
私が得るエラーは次のとおりです。
新しい:
構文エラー
終了機能:
「EndFunction」の前には、一致する「Function」が必要です。
これを行うには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ではラムダ式と呼ばれます。構文はすべて間違っています。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))