在Java中我可以扩展Thread
或实现Runnable
,C#中的等价物是什么?我发现只有看起来像工具可运行的东西,但没什么用处。
答案 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
- 尝试使用更高级别的抽象而不仅仅是原始线程。