Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Thread.Join-Methode: ()

 

Veröffentlicht: Juli 2016

Blockiert den aufrufenden Thread, bis der durch diese Instanz dargestellte Thread beendet wird, während das Standard-COM- und das SendMessage-Pumping fortgesetzt werden.

Namespace:   System.Threading
Assembly:  mscorlib (in mscorlib.dll)

[HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization = true, 
	ExternalThreading = true)]
public void Join()

Exception Condition
ThreadStateException

Der Aufrufer hat versucht, mit einem Thread zu verknüpfen, der den Zustand ThreadState.Unstarted hat.

ThreadInterruptedException

Der Thread wird beim Warten unterbrochen.

Joinist eine Synchronisierungsmethode, die den aufrufenden Thread (d. h. der Thread, der die Methode aufruft) blockiert, bis der Thread, dessen Join Methode wird aufgerufen, abgeschlossen wurde. Verwenden Sie diese Methode, um sicherzustellen, dass ein Thread beendet wurde. Der Aufrufer wird unendlich lang blockiert, wenn der Thread nicht beendet wird. Im folgenden Beispiel die Thread1 thread Aufrufen der Join() Methode Thread2, wodurch Thread1 zu blockieren, bis Thread2 wurde abgeschlossen.

using System;
using System.Threading;

public class Example
{
   static Thread thread1, thread2;

   public static void Main()
   {
      thread1 = new Thread(ThreadProc);
      thread1.Name = "Thread1";
      thread1.Start();

      thread2 = new Thread(ThreadProc);
      thread2.Name = "Thread2";
      thread2.Start();   
   }

   private static void ThreadProc()
   {
      Console.WriteLine("\nCurrent thread: {0}", Thread.CurrentThread.Name);
      if (Thread.CurrentThread.Name == "Thread1" && 
          thread2.ThreadState != ThreadState.Unstarted)
         thread2.Join();

      Thread.Sleep(4000);
      Console.WriteLine("\nCurrent thread: {0}", Thread.CurrentThread.Name);
      Console.WriteLine("Thread1: {0}", thread1.ThreadState);
      Console.WriteLine("Thread2: {0}\n", thread2.ThreadState);
   }
}
// The example displays output like the following:
//       Current thread: Thread1
//       
//       Current thread: Thread2
//       
//       Current thread: Thread2
//       Thread1: WaitSleepJoin
//       Thread2: Running
//       
//       
//       Current thread: Thread1
//       Thread1: Running
//       Thread2: Stopped

Wenn der Thread bereits beendet wurde Join aufgerufen wird, gibt die Methode sofort zurück.

System_CAPS_warningWarnung

Sie sollten niemals aufrufen, die Join Methode der Thread Objekt, das den aktuellen Thread aus dem aktuellen Thread darstellt. Dies bewirkt, dass Ihre app nicht mehr reagiert, da der aktuelle Thread auf sich selbst unbegrenzt wartet,

Diese Methode ändert den Zustand des aufrufenden Threads enthalten ThreadState.WaitSleepJoin. Sie können nicht aufgerufen werden Join auf einen Thread, in dem ThreadState.Unstarted Zustand.

.NET Framework
Verfügbar seit 1.1
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Zurück zum Anfang
Anzeigen: