C#中是否存在与此Java代码相同的内容?

Sur*_*nut 5 c# java multithreading

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

在C#Code中我想开始一个新的线程.但我想保留将在新线程中执行的代码与启动线程的方法相同,因为我认为它是更易读的代码.就像上面的Java示例一样.

C#中的等效代码将如何显示?

Ric*_*lly 16

您可以使用aTask来实现此目的:

public class ThreadTest {

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

正如@JonSkeet指出的那样,如果您不需要单独创建和安排,您可以使用:

Task task = Task.Factory.StartNew(() => ... // Code to run here);
Run Code Online (Sandbox Code Playgroud)

或者.Net 4.5+:

Task task = Task.Run(() =>  ... // Code to run here);
Run Code Online (Sandbox Code Playgroud)

  • 我可能会建议使用.NET 4.5中的Task.Factory.StartNew或Task.Run. (4认同)

Ste*_*fan 13

您可以使用Lambda表达式匿名方法:

Thread t = new Thread(() => /* Code to execute */);
t.Start();
Run Code Online (Sandbox Code Playgroud)