¿Tengo la certeza de que la única forma de evitar que un método se ejecute dos veces al mismo tiempo es usando una instrucción lock
?impedir que el método se ejecute desde diferentes subprocesos al mismo tiempo
private object lockMethod = new object();
public void Method() {
lock (lockMethod) {
// work
}
}
public void FromThread1() {
Method();
}
public void FromThread2() {
Method();
}
Por supuesto, también se puede utilizar MethodImpl(MethodImplOptions.Synchronized)
lo que sería casi lo mismo.
¿Hay otras técnicas?
Estoy un poco preocupado de que estés tratando de bloquear un _method_ en lugar de bloquear _data_ - ¿qué problema estás tratando de resolver? – sarnold
Dado que no muestra ningún método 'estático', ¿realmente está tratando de evitar la ejecución de un método dos veces para la misma instancia al mismo tiempo? ¿O dos métodos para una sola instancia al mismo tiempo? – HABO
el método es tan pequeño que en mi situación bloqueando el método = bloqueando los datos – javapowered