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

TaskFactory.StartNew-Methode: (Action)

.NET Framework (current version)
 

Veröffentlicht: Oktober 2016

Erstellt und startet eine Aufgabe.

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

public Task StartNew(
	Action action
)

Parameter

action
Type: System.Action

Der Aktionsdelegat, der asynchron ausgeführt werden soll.

Rückgabewert

Type: System.Threading.Tasks.Task

Die begonnene Aufgabe.

Exception Condition
ArgumentNullException

Das action -Argument ist null.

Aufrufen von StartNew entspricht funktional dem Erstellen eines Tasks mit einem seiner Konstruktoren und rufen Sie dann die Task.Start Methode, um die Aufgabe für die Ausführung zu planen.

Beginnend mit der .NET Framework 4.5, können Sie die Task.Run(Action) -Methode eine schnelle Möglichkeit zum Aufruf StartNew(Action) mit Standardparametern. Beachten Sie jedoch, dass ein Unterschied im Verhalten zwischen den beiden Methoden besteht im Hinblick auf: Task.Run(Action) Standardmäßig lässt keine untergeordneten Aufgaben gestartet, mit der TaskCreationOptions.AttachedToParent Option für die Verbindung mit dem aktuellen Task Instanz, während die StartNew(Action) verfügt. Weitere Informationen und Codebeispiele finden Sie unter Task.Run vs Task.Factory.StartNew in der parallelen Programmierung mit .NET Blog.

Im folgenden Beispiel wird die StartNew(Action) Methode wiederholt aufrufen eine Action -Delegat, der eine Zufallszahl generiert als Unicode-Codepunkt interpretiert, konvertiert es in eine UTF16-codierte Codeeinheit und zeigt Informationen über das bzw. die sich ergebenden Zeichen.

using System;
using System.Collections.Generic;
using System.Threading.Tasks;

public class Example
{
   public static void Main()
   {
      Random rnd = new Random();
      List<Task> tasks  = new List<Task>();
      // Execute the task 10 times.
      for (int ctr = 1; ctr <= 9; ctr++) {
         tasks.Add(Task.Factory.StartNew( () => {
                                            int utf32 = 0;
                                            lock(rnd) {
                                               // Get UTF32 value.
                                               utf32 = rnd.Next(0, 0xE01F0);
                                            }
                                            // Convert it to a UTF16-encoded character.
                                            string utf16 = Char.ConvertFromUtf32(utf32);
                                            // Display information about the character.
                                            Console.WriteLine("0x{0:X8} --> '{1,2}' ({2})", 
                                                              utf32, utf16, ShowHex(utf16));
                                         }));                           
      }
      Task.WaitAll(tasks.ToArray()); 
   }

   private static string ShowHex(string value)
   {
      string hexString = null;
      // Handle only non-control characters.
      if (! Char.IsControl(value, 0)) {
         foreach (var ch in value)
            hexString += String.Format("0x{0} ", Convert.ToUInt16(ch));

      }   
      return hexString.Trim();
   }
}
// The example displays the following output:
//       0x00097103 --> '����' (0x55836 0x56579)
//       0x000A98A1 --> '����' (0x55910 0x56481)
//       0x00050002 --> '����' (0x55552 0x56322)
//       0x0000FEF1 --> ' ﻱ' (0x65265)
//       0x0008BC0A --> '����' (0x55791 0x56330)
//       0x000860EA --> '����' (0x55768 0x56554)
//       0x0009AC5A --> '����' (0x55851 0x56410)
//       0x00053320 --> '����' (0x55564 0x57120)
//       0x000874EF --> '����' (0x55773 0x56559)

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 4.0
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Silverlight
Verfügbar seit 5.0
Windows Phone Silverlight
Verfügbar seit 8.0
Windows Phone
Verfügbar seit 8.1
Zurück zum Anfang
Anzeigen: