1、使用Thread
//将函数DoWork(),放入一个新线程中,并开启这个线程
Thread thread = new Thread(() => this.DoWork()); //或者 Thread thread = new Thread(new ThreadStart(DoWork));
thread.Start();
2、使用Task
2.1 方式1
Task task = new Task(() => this.StartHoming(_selectAxis, homeMode, homeDir, praCurve, praAcc, praVm));
task.Start();
2.2 方式2
Task.Run
是在 dotnet framework 4.5 之后才可以使用,可以认为 Task.Run
是简化的 Task.Factory.StartNew
的使用。需要 知道 Task.Run 用的是线程池。
比如:Task.Run(
() => this.DoWork());
或者:
Task.Run(() =>
{
var foo = 2;
});
2.3 方式3
Task.Factory.StartNew
比如:
Task.Factory.StartNew(() =>
{
ar foo = 2;
});
两个方法实际上是没有差别,但是Task.Run
比较好看,所以推荐使用Task.Run。
3、线程池
ThreadPool
ThreadPool.QueueUserWorkItem(DoWork());
4、委托BeginInvoke()、EndInvoke()