Método de bloqueo en c #

Tengo una clase con estos tres métodos. Esta clase es utilizada por muchos hilos. Me gustaría que el Método 1 esperara, si el Método 2 y / o el Método 3 se están ejecutando en cualquier subproceso. ¿Alguna sugerencia?

public class Class1
{
    public static void Method1() 
    {
        Object lockThis = new Object();

        lock (lockThis)
        {
            //Body function
        }
    }

    public static void Method2() 
    {
         //Body function
    }

    public static void Method3() 
    {
         //Body function
    }
}

Respuestas a la pregunta(4)

Su respuesta a la pregunta