Problema de subprocesos de C #

¿Hay algún consejo general sobre el uso de subprocesos múltiples al llamar unmanaged código?

Recibo al azar errores de infracción de acceso y obviamente indagando en eso unmanaged el código no tiene mucho sentido.

¿Hay algunos enfoques que podría probar en lugar de poner estas llamadas en algún tipo de critical section para eliminar los errores de infracción?

preguntado el 10 de mayo de 11 a las 13:05

Los errores de infracción de acceso no necesariamente el resultado de problemas de subprocesos múltiples, al menos no cuando está escribiendo código inseguro. ¿Está creando explícitamente varios subprocesos o simplemente está asumiendo que debe ser el problema? ¿Qué te dice el depurador? -

1 Respuestas

Depende de si el componente no administrado al que está llamando está programado con seguridad para subprocesos o no.

Si obtiene violaciones de acceso solo cuando llama a este código en paralelo, parece que el componente que está utilizando no es seguro para subprocesos.

Utilice el C # lock() declaración para que sea seguro:

private static readonly myLockObject = new object();

...

lock (myLockObject)
{
   CallMyUnsafeCode();
}

contestado el 10 de mayo de 11 a las 17:05

Bueno, eventualmente quise decir que cuando estaba hablando de critical sections. Gracias de cualquier manera - Yippie-Ki-Yay

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.