if (thread == null)
{
thread = new Thread(Request);
thread.Start();
}
else if (thread.IsAlive)
{
thread.Interrupt();
}
else
{
thread.Start();
}
맨 처음 Thread 변수가 null이라면 할당 후 돌려주고
돌아가고 있다면 Interrupt
null은 아니지만 멈춰있다면 다시 Start를 해주려고 합니다.
그런데 맨 처음 할당 후 실행을 하고 난 이후에 thread는 IsAlive 상태가 True 여야 된다고 생각을 해서
저렇게 조건을 두고 작성 한 것인데 실제로는 IsAlive가 false로 나오더라고요.
또한 ThreadState도 Stopped로 나오고요.
그런데 실제로는 Thread가 돌아가고 있기 때문에 else 구문에서 다시 실행하게 되면
중복 실행이 안 되는 Exception이 나오게 됩니다.
왜 ISalive 및 threadState가 이렇게 저장되는지 궁금합니다.
또, 제가 생각하는 IsAlive의 기능을 사용하고 싶다면 따로 변수를 실행해서 핸들링 하는 방법밖에 없는지 질문드리고 싶습니다!
감사합니다.