/ / ¿Cómo escribir métodos seguros para subprocesos? - vb.net, multiproceso, seguridad de subprocesos

¿Cómo escribir métodos seguros para subprocesos? - vb.net, multihilo, hilo de seguridad

¿Es esta buena práctica y suficiente para garantizar la seguridad de los hilos al método? DoSomething en VB.NET?

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

Respuestas

3 para la respuesta № 1

Creo que puedes querer decir algo diferente por seguridad del hilo que la definición habitual del término. El significado normal del término es que múltiples subprocesos pueden llamar al mismo método u objeto simultáneamente sin errores ni efectos secundarios negativos. Normalmente, este tipo de seguridad de subprocesos se logra a través de la apatridia y el bloqueo (por ejemplo, SyncLock)

Sin embargo, en su ejemplo, el código no esintentando proporcionar ese tipo de seguridad de subprocesos, o al menos no directamente. Cumple con ese tipo de seguridad de subprocesos, pero solo forzando que todas las invocaciones se ejecuten en el mismo subproceso único (el subproceso de la interfaz de usuario). Las aplicaciones de WinForm (que supongo que esto es) requieren que todo el trabajo de la interfaz de usuario se realice en el subproceso de la interfaz de usuario. Por lo tanto, si un método que hace algo con la interfaz de usuario se llama desde otro subproceso, primero debe invocar de nuevo al subproceso de la interfaz de usuario antes de completar su trabajo. Para ese escenario específico, el código que ha publicado está bien.