自定义类传递数据和前台线程、后台线程
自定义类传递数据和前台线程、后台线程
internal class DowmloadTool
{
public string URL { get; private set; }
public string Message { get; private set; }
public DownloadTool(string uRL, string message)
{
URL = uRL;
Message = message;
}
public void Download()
{
Console.WriteLine("从" + URL + "下载中...");
}
}
static void Main(string[] args)
{
var downloadTool = new DownloadTool("http://www.xxxx.com", "avdgdfb");
Thread t = new Thread(downloadTool.Download);
t.Start();
}
前台线程和后台线程
只有一个前台线程在运行,应用程序的进程就在运行。如果多个前台线程在运行,但是 Main 方法结束了,应用程序的进程仍然是运行的,直到所有的前台线程完成其任务为止。
在默认情况下,用 Thread 类创建的线程是前台线程。线程池中的线程是后台线程。
在用 Thread 类创建线程的时候,可以设置 IsBackground
属性,表示它是一个前台线程还是一个后台线程。
static void Main(string[] args)
{
var t1 = new Thread(ThreadMain) { IsBackground = false }; // 前台线程
t1.Start();
Console.WriteLine("Main thread ending now.");
}
static void ThreadMain()
{
Console.WriteLine("Thread " + Thread.CurrentThread.Name + " started");
Thread.Sleep(3000);
Console.WriteLine("Thread " + Thread.CurrentThread.Name + " completed");
}
static void Main(string[] args)
{
var t1 = new Thread(ThreadMain) { IsBackground = true }; // 后台线程
t1.Start();
Console.WriteLine("Main thread ending now.");
}
static void ThreadMain()
{
Console.WriteLine("Thread " + Thread.CurrentThread.Name + " started");
Thread.Sleep(3000);
Console.WriteLine("Thread " + Thread.CurrentThread.Name + " completed");
}