了解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
程序执行正常。但是我不明白这个输出是怎么产生的。这个程序是如何工作的?我对线程没有很好的理解。
有人能为我解释一下吗?
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()
方法。
我希望您对线程有所了解。。是吗?