2012-01-26 23 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(); 
    } 
} 

En C# Code quiero comenzar un nuevo hilo. Pero quiero mantener el código que se ejecutará en el nuevo subproceso en el mismo método en el que se inicia el subproceso, porque creo que es un código más legible. Como en el ejemplo de Java anterior.¿Hay un equivalente en C# para este código de Java?

¿Cómo se verá el código equivalente en C#?

+3

Ese código no crea un subproceso. Simplemente ejecuta el método run() de Runnable en su hilo actual. Si quieres un hilo, necesitas hacer 'new Thread (yourRunnable) .start()' –

+0

Tienes razón. Gracias. –

Respuesta

17

Puede utilizar a Task para lograrlo:

public class ThreadTest { 

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

Como @JonSkeet señala, si no es necesario separar la creación y programación que puede utilizar:

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

O en .Net 4.5+:

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

+1 Porque el enfoque de Tarea es el enfoque de programación asíncrono recomendado desde .NET 4 –

+4

Probablemente sugiero usar Task.Factory.StartNew o Task.Run desde .NET 4.5. –

+0

@JonSkeet Y yo en realidad ... ¡respuesta actualizada! –

Cuestiones relacionadas