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

时间:2012-11-14 15:27:34

标签: c# multithreading

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

1 个答案:

答案 0 :(得分:8)

不,你没有在C#中扩展Thread - 你通常也不应该在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);
        }        
    }
}

有关代表的更多信息,请参阅my article on the topic

有关线程的更多信息,请参阅Joe Albahari's threading tutorial

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