/// <summary>Notifies all waiting threads of a change in the object's state.</summary>
/// <param name="obj">The object that sends the pulse. </param>
/// <exception cref="T:System.ArgumentNullException">The <paramref name="obj" /> parameter is null. </exception>
/// <exception cref="T:System.Threading.SynchronizationLockException">The calling thread does not own the lock for the specified object. </exception>
/// <filterpriority>1</filterpriority>
public static void PulseAll(object obj)
{
if (obj == null)
{
throw new ArgumentNullException("obj");
}
if (!Monitor.Monitor_test_synchronised(obj))
{
throw new SynchronizationLockException("Object is not synchronized");
}
Monitor.Monitor_pulse_all(obj);
}