C# 中是否有与此 Java 代码等效的代码

本文关键字:代码 Java 是否 | 更新日期: 2023-09-27 18:21:40

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# 代码中,我想启动一个新线程。但是我想将将在新线程中执行的代码保留在启动线程的相同方法中,因为我认为它是更具可读性的代码。就像上面的 Java 示例一样。

C# 中的等效代码将是什么样子的?

C# 中是否有与此 Java 代码等效的代码

您可以使用

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);
您可以使用

Lambda 表达式或匿名方法:

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