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

Trong mã C# tôi muốn bắt đầu một chuỗi mới. Nhưng tôi muốn giữ mã sẽ được thực hiện trong chủ đề mới trong cùng một phương pháp trong đó thread được bắt đầu bởi vì tôi nghĩ rằng đó là mã dễ đọc hơn. Giống như trong ví dụ Java ở trên.Có tương đương trong C# với mã Java này không?

Mã tương đương trong C# trông như thế nào?

+3

Mã đó không tạo Chủ đề. Bạn chỉ cần chạy phương thức run() của Runnable trong luồng hiện tại của bạn. Nếu bạn muốn một chủ đề, bạn cần phải làm 'Chủ đề mới (yourRunnable) .start()' –

+0

Bạn nói đúng. Cảm ơn. –

Trả lời

17

Bạn có thể sử dụng a Task để đạt được điều này:

public class ThreadTest { 

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

Như @JonSkeet chỉ ra, nếu bạn không cần phải tách biệt sáng tạo và lập lịch mà bạn có thể sử dụng:

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

Hoặc bằng .Net 4.5+:

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

+1 Vì phương pháp tiếp cận tác vụ là phương pháp lập trình không đồng bộ được khuyến nghị từ .NET 4 –

+4

Tôi có thể đề xuất sử dụng Task.Factory.StartNew hoặc Task.Run từ .NET 4.5. –

+0

@JonSkeet Và tôi thực sự ... đã trả lời cập nhật! –

Các vấn đề liên quan