Frage

Also habe ich den folgenden Code

 Action d = () =>
                {                                                             
                   for (int i = 0; i <= 10; i++)
                   {
                      Thread.Sleep(50);
                      Console.WriteLine("Task: {0} log:{1}",Thread.CurrentThread.ManagedThreadId,i);
                   }
                };
 Task.Factory.StartNew(d);

Es gibt jedoch nichts aus. Aber wenn ich Thread.Sleep kommentiere, funktioniert es wie erwartet. Das Spielen mit unterschiedlichen Schlafwerten bringt mir je nach Wert mehr oder weniger Ergebnisse.

Warum passiert es so?

War es hilfreich?

Lösung

Ich vermute, Ihr Programm beendet, bevor die Aufgabe die Chance hat, auszuführen.

Aufgaben werden standardmäßig auf Thread -Pool -Threads ausgeführt, bei denen es sich um Hintergrund -Threads handelt. Das heißt, Ihr Programm wartet nicht, bis sie vor dem Verlassen fertig sind.

Fügen Sie dies in Ihrem Haupt -Thread hinzu:

var task = Task.Factory.StartNew( d );
task.Wait();

Andere Tipps

Warten Sie darauf, dass die Aufgabe irgendwo abgeschlossen ist, oder kündigt Ihr Programm vor, bevor die Aufgabe erledigt ist?

Task task = Task.Factory.StartNew(d);
task.Wait();

Ich habe gerade Ihren Code ausgeführt und es gibt ausgegeben:

Task: 10 log:0
Task: 10 log:1
Task: 10 log:2
Task: 10 log:3
Task: 10 log:4
Task: 10 log:5
Task: 10 log:6
Task: 10 log:7
Task: 10 log:8
Task: 10 log:9
Task: 10 log:10

Hier ist der Konsolencode basierend auf Ihrer Code -App, die ich ausgeführt habe:

using System.Threading;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
  class Program
  {
    static void Main(string[] args)
    {
      Action d = () =>
      {
        for (int i = 0; i <= 10; i++)
        {
          Thread.Sleep(50);
          Console.WriteLine("Task: {0} log:{1}", Thread.CurrentThread.ManagedThreadId, i);
        }
      };
      Task.Factory.StartNew(d);
      Console.ReadLine();
    }
  }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top