如何在C#中启动一个线程

Rob*_*ert -3 c# multithreading

在Java中我可以扩展Thread或实现Runnable,C#中的等价物是什么?我发现只有看起来像工具可运行的东西,但没什么用处.

Jon*_*eet 8

不,你没有Thread在C#中扩展- 你通常不应该用Java.(您应该只实现该Runnable接口.)

相反,如果要开始创建新线程,则创建ThreadStart委托或ParameterizedThreadStart委托的实例,并将其传递给构造函数Thread.

这是一个简短而完整的例子:

using System;
using System.Threading;

class Test
{
    public static void Main(string[] args)
    {
        ThreadStart action = Count;
        Thread thread = new Thread(action);
        thread.Start();
        for (int i = 0; i < 5; i++)
        {
            Console.WriteLine("Main thread...");
            Thread.Sleep(1000);
        }
    }

    static void Count()
    {
        for (int i = 0; i < 20; i++)
        {
            Console.WriteLine("Secondary thread...");
            Thread.Sleep(300);
        }        
    }
}
Run Code Online (Sandbox Code Playgroud)

有关代理的更多信息,请参阅有关该主题的文章.

有关线程的更多信息,请参阅Joe Albahari的线程教程.

说实话,这些天你通常应该使用System.Threading.Tasks.Task- 尝试使用更高级别的抽象而不仅仅是原始线程.