Вот то, что я узнал, поэтому я отвечаю, чтобы помочь любому читателю, который заинтересован.
AutoResetEvent нельзя использовать в непоточных методах, например, в среде Button1. Когда WaitOne был запущен внутри Button1, все останавливалось, включая выполнение программы внутри Button1, а также все потоки, которые уже были запущены. Другими словами, ничего не будет работать (пользовательский интерфейс или потоки, которые уже были запущены).
Следовательно, WaitOne и Set могут использоваться только внутри потоковых методов, то есть методов, которые являются частью потока, они не могут использовать везде, где вы хотите, особенно непотоковые методы или код, для которого, как вы думаете, вы можете дождаться завершения потоков, прежде чем начнется следующий поток.