これはVB.NETのDoSomething
メソッドへのスレッドセーフティを確実にするのに適していますか?スレッドセーフなメソッドを書くには?
Public Class MyForm : Inherits Form
Public Sub DoSomething(parameter As Object)
If Me.InvokeRequired Then
Me.Invoke(Sub() DoSomething(parameter))
Else
'Do Something
End If
End Sub
End Class
ありがとうございました。私は時々SyncLockを使いましたが、あなたが何を意味しているのか理解していますが、知識の不足、何が無国籍なのか分かりません。私が行ってそれについて学ぶためのヒントを教えてください。 – VBobCat
これは、メソッドやオブジェクトが内部状態を保持していない場合、一般にスレッドセーフであると考えられます。言い換えれば、メソッドがすべてのデータを入力パラメータとして要求し、すべての結果を戻り値として返し、そのフィールドのいずれかにデータを読み書きしない限り、多くのスレッドから同時に呼び出されるのが安全です。オブジェクトが呼び出し間で値を保持している場合、特にそのメソッドやプロパティを呼び出すと状態が変化する場合は、その状態が不安定になるため安全ではありません。 –
もっと一般的なので、おそらく私が使用した方が良いことは_Immutability_だったと思います。 –