C#Thread.Join()

次のようにThread.Join()の公式ウェブサイトは説明しました:

https://docs.microsoft.com/zh-cn/dotnet/api/system.threading.thread.join?view=netframework-4.8

 

このインスタンス内のスレッドが表す前に終了は、呼び出し元のスレッドをブロックします。

次のコードは、スレッド1が最初に実行されますが、スレッド2の実行が完了した後に、スレッド1続けるまでによるthread2.join()ブロックスレッドの実装に、スレッドが待機する必要があります。

それは次のとおりです。CurThreadスレッドがCalleeThreadスレッドがダウンし続ける前にCurThreadだけCalleeThread.Join()以降のコードの実行が終了するまでブロックされます前に、

使用してシステムを。
使用してSystem.Threadingを。

パブリック クラスの
{ 
   静的スレッドスレッド1、スレッド2。
   
   公共の 静的な 無効メイン()
   { 
      スレッド1 = 新しいスレッド(ThreadProc)。
      thread1.Name = " スレッド1 " ; 
      thread1.Start(); 
      
      スレッド2 = 新しいスレッド(ThreadProc)。
      thread2.Name = スレッド2 
      thread2.Start();   
   } 

   プライベート 静的 ボイドThreadProc()
   { 
      Console.WriteLineを(" \ nCurrentスレッド:{0} " 、Thread.CurrentThread.Name)。
      もし(Thread.CurrentThread.Name == " スレッド1 " &&  
          thread2.ThreadState!= ThreadState.Unstarted)
         thread2.Join(); 
      
      Thread.sleep(4000 ); 
      Console.WriteLineを(" \ nCurrentスレッド:{0} " 、Thread.CurrentThread.Name)。
      Console.WriteLineを(" スレッド1:{0} " 、thread1.ThreadState)。
      Console.WriteLineを("スレッド2:{0} \ n " ;、thread2.ThreadState)
   } 
} 
// :例では、次のような出力を表示
 //        現在のスレッド:スレッド1
 //        
//        現在のスレッド:スレッド2
 //        
//        現在のスレッド:スレッド2
 //        スレッド1:WaitSleepJoin
 //        スレッド2:実行
 //        
//        
//        スレッド1:現在のスレッド
 //        スレッド1:実行
 //        スレッド2を:停止

 

こともでき、物品の説明があります:

https://www.cnblogs.com/slikyn/articles/1525940.html

おすすめ

転載: www.cnblogs.com/ryanzheng/p/10962468.html