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

时间:2012-01-26 12:33:30

标签: 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();
    }
}

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

C#中的等效代码如何?

2 个答案:

答案 0 :(得分:17)

您可以使用a Task来实现此目标:

public class ThreadTest {

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

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

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

或.Net 4.5 +:

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

答案 1 :(得分:14)

您可以使用Lambda ExpressionAnonymous Method

Thread t = new Thread(() => /* Code to execute */);
t.Start();