2012-01-26 15 views
5
public class ThreadTest { 

    public static void main(String[] args) { 

     Runnable runnable = new Runnable(){ 
      @Override 
      public void run(){ 
       //Code to execute on thread.start(); 
      }}; 

     Thread thread = new Thread(runnable); 
     thread.start(); 
    } 
} 

W C# Code Chcę rozpocząć nowy wątek. Ale chcę zachować kod, który będzie wykonywany w nowym wątku w tej samej metody, w której wątek jest uruchomiony, ponieważ myślę, że jest bardziej czytelny kod. Podobnie jak w powyższym przykładzie Java.Czy istnieje odpowiednik w języku C# do tego kodu Java?

Jak będzie wyglądać równoważny kod w C#?

+3

Ten kod nie tworzy wątku. Po prostu uruchom metodę run() Runnable w bieżącym wątku. Jeśli chcesz wątek, musisz zrobić 'new Thread (yourRunnable) .start()' –

+0

Masz rację. Dzięki. –

Odpowiedz

17

Można użyć a Task do osiągnięcia tego celu:

public class ThreadTest { 

    public static void Main(string[] args) 
    { 
    Task task = new Task(() => ... // Code to run here); 
    task.Start(); 
    } 
} 

Jak @JonSkeet zwraca uwagę, jeśli nie trzeba oddzielić tworzenie i harmonogram można użyć:

Task task = Task.Factory.StartNew(() => ... // Code to run here); 

Lub w .Net 4.5+:

Task task = Task.Run(() => ... // Code to run here); 
+0

+1 Ponieważ podejście Task jest zalecanym podejściem programowania asynchronicznego od .NET 4 –

+4

Prawdopodobnie sugerowałbym użycie Task.Factory.StartNew lub Task.Run z .NET 4.5. –

+0

@JonSkeet A ja właściwie ... odpowiedź zaktualizowana! –

Powiązane problemy