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ć ?