2012-06-04 3 views
1

를 사용 중지 된 스레드를 다시 시작 나는 다음과 같은 코드가 있습니다플래그

class SoundPlayback 
{ 
     protected volatile bool _playing; 
     public bool Playing {...} 

     protected void Begin() 
     { 
      while (Playing && _sheet.TimeTick != 0) 
      { 
       _sheet.PlaySounds(); 
       Thread.Sleep(_sheet.TimeTick); 
      } 
      _playing = false; 
     } 
} 

내가 주위에 처음으로 잘 작동 스레드 시작과 함께) (시작 호출 스레드를 가지고 있지만, _playing 때 나는 거짓과 재생을 다시 시작하고 싶습니다. 도움을 주시면 감사하겠습니다.

+4

'_playing'가'false'로 설정되면 스레드가 종료됩니다. 그래서 당신은 그것을 재개 할 수 없습니다. – CodesInChaos

+0

thread.Sleep은 테스트를 제외하고 항상 나쁜 생각입니다. –

답변

2

스레드 (어떤 스레드 만이 아니라 닷넷) :

  • 수면 : BAD

  • 블록에-이벤트 : 좋은

은 한 번보세요 이 가장 우수한 자습서의 "동기화 요점":

그리고에 루프를 변경 :

1) 다른 기능은 "작업"

2 할 호출 일부 글로벌 "완료"변수에 의존) (대신에 종료 When "TimeTick! = 0"!!!!!)

+0

감사합니다. 이 루프는 실제로 작동하지 않는 코드의 다른 부분을 테스트하기위한 것이 었습니다. 또한 스레딩을 처음 접했습니다. 그 튜토리얼은 정말 좋아 보인다, 고마워! 이것은 내가 필요한 것입니다. –