了解C#线程需要帮助

本文关键字:帮助 线程 了解 | 更新日期: 2023-09-27 17:49:30

我有一个像这样的控制台应用程序,它使用线程。

namespace ConsoleApplication1
{
    public static class Program
    {
        public static void ThreadMethod()
        {
            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine("ThreadProc: {0}", i);              
                Thread.Sleep(0);
            }
            Console.ReadLine();
        }
        public static void Main()
        {
            Thread t = new Thread(new ThreadStart(ThreadMethod));
            t.Start();
            for (int i = 0; i < 4; i++)
            {
                Console.WriteLine("Main thread: Do some work.");
                Thread.Sleep(0);
            }
            t.Join();
        }
    }
}

程序输出如下:

Main thread: Do some work.
ThreadProc: 0
Main thread: Do some work.
ThreadProc: 1
Main thread: Do some work.
ThreadProc: 2
Main thread: Do some work.
ThreadProc: 3
ThreadProc: 4
ThreadProc: 5
ThreadProc: 6
ThreadProc: 7
ThreadProc: 8
ThreadProc: 9
ThreadProc: 10

程序执行正常。但是我不明白这个输出是怎么产生的。这个程序是如何工作的?我对线程没有很好的理解。

有人能为我解释一下吗?

了解C#线程需要帮助

Main()是应用程序的起点。

CCD_ 2创建与主线程并行运行的第二个线程。从现在起,方法Main中的代码与方法ThreadMethod一起执行。控制台输出顺序中没有保证。改变睡眠时间,你会看到不同的结果。

t.Join将保持Main的执行直到ThreadMethod完成。在这一行下面,程序只有一个线程,所有内容都将按顺序执行。

评论中提到的这篇文章很好地解释了C应用程序中的线程,但这些原则几乎适用于所有语言。

本文将更详细地解释C#中的线程。

作为一名初学者,如果您的目标是了解Thread在.NET中的操作方式,我建议您在Visual Studio中打开Threads窗口,并在程序执行过程中观察程序。

不要按F5调试应用程序,而是试着按F11进入代码的第一行。它应该使您进入调试模式,过程在第一行暂停。

要打开Threads窗口,请按Ctrl + Alt + H,也可以通过以下菜单导航找到:Debug > Windows > Threads。此菜单仅在调试时可见。

当您逐步完成代码时,您应该能够看到每次调用Thread.Sleep(0); 时第一个和第二个线程之间的活动线程切换

希望这能有所帮助。

线程在任何编程语言中都是轻量级进程。

通常,程序作为进程执行。类似地,线程是分组为一个主进程的小进程。

例如:如果程序在系统中执行(例如Web浏览器,则Web浏览器是进程,在浏览器选项卡中,http连接、浏览器渲染是线程(。

事实上,我在C#中没有使用线程,有一天我使用smtp.send(Mail)发送邮件。send(mail)需要5秒的时间才能执行,因为它需要互联网连接。所以我使用单独的线程在Main((之外运行这个send()方法。

我希望您对线程有所了解。。是吗?