Witam, mam taką klasę:

    class Test
    {
        public int i = 0;

        private Thread thread;
        private bool ThreadRunning = false;
        private bool ThreadPaused = false;

        static EventWaitHandle go;

        private void ThreadRun()
        {
            while (ThreadRunning)
            {
                i++;

                if (ThreadPaused)
                {
                    go.WaitOne();
                }
            }
        }

        public Test()
        {
            go = new EventWaitHandle(false, EventResetMode.AutoReset);
            thread = new Thread(new ThreadStart(ThreadRun));
            ThreadRunning = true;
            ThreadPaused = false;

            thread.Start();
        }

        public void Stop()
        {
            ThreadRunning = false;
            Resume();
        }

        public void Pause()
        {
            if (thread.IsAlive)
            {
                ThreadPaused = true;
            }
        }

        public void Resume()
        {
            if (ThreadPaused)
            {
                ThreadPaused = false;
                go.Set();
            }
        }

        public void Step()
        {
            ThreadPaused = true;
            go.Set();
        }
    }

ogólnie ona działa prawidłowo ale mam pytanie czy to tak powinno wyglądać ? czy powinienem zastosować jakiś Monitor czy coś w tym stylu ?
ogólnie chcę mieć wątek który będę mógł pauzować, wznawiać i odpalać "krok po kroku" (jedno naciśnięcie przycisku = jedna przebieg wątku)
największy problem jeszcze mam z kończeniem pracy wątku ... czy muszę zbierać wszystkie odpalone wątki i je kończyć w FormClosed ? jak najlepiej to zrobić ?