C# 在C中创建线程#

C# 在C中创建线程#,c#,multithreading,C#,Multithreading,在C#中如何创建线程 在java中,我要么实现Runnable接口 class MyThread implements Runnable{ public void run(){ //metthod } 然后 MyThread mt = new MyThread; Thread tt = new Thread(mt); tt.start() MyThread mt = new MyThread mt.start(); 或者我可以简单地扩展Thread类 class MyThread exte

在C#中如何创建线程

在java中,我要么实现Runnable接口

class MyThread implements Runnable{
public void run(){
//metthod
}
然后

MyThread mt = new MyThread;
Thread tt = new Thread(mt);
tt.start()
MyThread mt = new MyThread
mt.start();
或者我可以简单地扩展Thread类

class MyThread extends Thread{
public void run(){
//method body
}
然后

MyThread mt = new MyThread;
Thread tt = new Thread(mt);
tt.start()
MyThread mt = new MyThread
mt.start();

不,与Java相反,在.NET中不能扩展该类,因为它是密封的

因此,要在新线程中执行函数,最简单的方法是手动生成一个新线程,并将要执行的函数传递给它(在本例中为匿名函数):

或者,如果不想使用匿名委托,请定义一个方法:

public void SomeMethod()
{
    // put the code here that you want to be executed in a new thread
}
然后在同一个类中启动一个新线程,将引用传递到此方法:

Thread thread = new Thread(SomeMethod);
thread.Start();
如果要将参数传递给该方法:

public void SomeMethod(object someParameter)
{
    // put the code here that you want to be executed in a new thread
}
然后:

Thread thread = new Thread(SomeMethod);
thread.Start("this is some value");

这是在后台线程中执行任务的本机方法。为了避免为创建新线程付出高昂代价,您可以使用以下线程之一:

或使用:


执行此类任务的另一种更现代的方式是使用TPL(从.NET 4.0开始):


所以,是的,正如你所看到的,有很多技术可以用来在一个单独的线程上运行一堆代码。

不,与Java相反,在.NET中,你不能扩展这个类,因为它是密封的

因此,要在新线程中执行函数,最简单的方法是手动生成一个新线程,并将要执行的函数传递给它(在本例中为匿名函数):

或者,如果不想使用匿名委托,请定义一个方法:

public void SomeMethod()
{
    // put the code here that you want to be executed in a new thread
}
然后在同一个类中启动一个新线程,将引用传递到此方法:

Thread thread = new Thread(SomeMethod);
thread.Start();
如果要将参数传递给该方法:

public void SomeMethod(object someParameter)
{
    // put the code here that you want to be executed in a new thread
}
然后:

Thread thread = new Thread(SomeMethod);
thread.Start("this is some value");

这是在后台线程中执行任务的本机方法。为了避免为创建新线程付出高昂代价,您可以使用以下线程之一:

或使用:


执行此类任务的另一种更现代的方式是使用TPL(从.NET 4.0开始):


所以,是的,正如你所看到的,有很多技术可以用来在一个单独的线程上运行一堆代码。

删除
[java]
,因为答案不是关于java的(只是在问题中提到过),有很多方法可以做到这一点。我建议看看约瑟夫·阿尔巴哈里的作品。这是一本很好的入门书,虽然有点过时(例如,TPL将不被提及)。如果你尝试在
C#Thread
上使用你最喜欢的搜索引擎进行搜索,你会发现无数的链接列表。当然,首先要删除
[java]
,因为答案不是关于java的(只在问题中提到),有很多方法可以做到这一点。我建议看看约瑟夫·阿尔巴哈里的作品。这是一本很好的入门书,虽然有点过时(例如,TPL将不被提及)。如果你尝试在
C#Thread
上使用你最喜欢的搜索引擎进行搜索,你会发现无数的链接列表。当然,从附加信息开始,您还可以使用
Timer
thread类创建一个以指定间隔重复自身的线程。@Joe,是的,正如我所说,有一些类似gazzilion的方法可以在后台线程上执行某些任务。关于这个问题,人们已经写了整本书。很难在一个单一的答案中涵盖所有问题。我只是给了OP一些建议,这样他可以继续他的研究,希望下次能问一个更具体的问题。我只是向OP指出计时器,因为知道它很有用,也可以确保他不会在线程中添加某种睡眠来模拟计时器;)作为补充信息,您还可以使用
Timer
thread类创建一个以指定间隔重复自身的线程。@Joe,是的,正如我所说,有很多方法可以在后台线程上执行某些任务。关于这个问题,人们已经写了整本书。很难在一个单一的答案中涵盖所有问题。我只是给了OP一些建议,这样他可以继续他的研究,希望下次能问一个更具体的问题。我只是向OP指出计时器,因为知道它很有用,也可以确保他不会在线程中添加某种睡眠来模拟计时器;)