1.使用线程池
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
namespace ThreadTest
{
class CustomThread
{
public CustomThread ()
{
ThreadPool.QueueUserWorkItem(PrintTest);
}
private void PrintTest (object obj)
{
Console.WriteLine("Test");
}
}
}
使用线程池开启的线程,函数要有object参数。
2.使用任务
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
namespace ThreadTest
{
class CustomThread
{
public CustomThread ()
{
Task t = new Task(PrintTest);
t.Start();
}
private void PrintTest ()
{
Console.WriteLine("Test");
}
}
}
使用任务可以连续开启,即在一个任务结束后开始执行另一个:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
namespace ThreadTest
{
class CustomThread
{
public CustomThread ()
{
Task t = new Task(PrintTest);
t.Start();
Task t2 = t.ContinueWith(PrintTest2);
}
private void PrintTest ()
{
Console.WriteLine("Test");
}
private void PrintTest2 (Task t)
{
Console.WriteLine("Test2");
}
}
}
3.使用任务工厂
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
namespace ThreadTest
{
class CustomThread
{
public CustomThread ()
{
TaskFactory tf = new TaskFactory();
tf.StartNew(PrintTest);
}
private void PrintTest ()
{
Console.WriteLine("Test");
}
}
}
注意,此三种方式开启的线程都是后台线程。