Estoy escribiendo una estructura de datos especial que estará disponible en una biblioteca .NET y una de las características de esta estructura de datos es que será segura para hilos, siempre que solo un hilo le escriba datos, y solo un hilo lo lea datos del mismo (el hilo del lector y el hilo del escritor pueden ser diferentes).Cómo detectar el acceso de subprocesos cruzados en .NET (aplicar la afinidad de subprocesos)?
La pregunta es ¿cómo puedo exigir que todas las operaciones de lectura se ejecuten con el mismo hilo?
Mi solución sería capturar el System.Threading.Thread.ManagedThreadID y almacenarlo en un miembro privado en la primera lectura. Luego, en lecturas posteriores, compruebe el ManagedThreadID contra el guardado y si son diferentes para arrojar una excepción.
¿Eso es suficiente o hay un mecanismo diferente más confiable para hacer esto?
Nota: No es un requisito que esta biblioteca sea utilizable sin un contexto Windows.Forms ..
Gracias Jared. Es curioso, ¿ves alguna razón para que @ sixlettervariables responda mejor/peor? –
@Miky D, la única razón por la que diría que es peor es porque está mezclando responsabilidades. Tener una clase separada para verificar el acceso a hilos cruzados no válidos proporciona una experiencia consistente y reutilizable. Sin embargo, es una cantidad muy pequeña de código y lo único que realmente puede estropear es el mensaje de error, así que en mi humilde opinión no es un gran problema. – JaredPar
Estoy de acuerdo con JaredPar en cuanto al uso de una clase, pero no con el uso de la ID Administrada. Pero sí, +1 usa otra clase para manejar la lógica. – user7116