自定义类传递数据和前台线程、后台线程

自定义类传递数据和前台线程、后台线程


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");
}
posted @ 2023-10-04 15:52  天空之城00  阅读(14)  评论(0)    收藏  举报