需要帮助了解C#线程

Tom*_*Tom -1 c# multithreading

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

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();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

计划的输出如下:

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
Run Code Online (Sandbox Code Playgroud)

程序正常执行.但我无法理解这个输出是如何产生的.这个程序如何运作?我对线程没有很好的理解.

有人可以帮我解释一下吗?

Jan*_*ník 7

Main() 是您的申请的起点.

t.Start()创建与主要线程并行运行的第二个线程.从现在开始,方法中的代码Main与方法一起执行ThreadMethod.控制台输出订单中没有保证.改变睡眠时间,你会看到不同的结果.

t.Join将持续Main执行直至ThreadMethod完成.在这一行下面,程序只有一个线程,一切都将按顺序执行.

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

本文更详细地介绍了C#中的线程.

  • meta上有明确的帖子说你不应该对坏问题的合法答案进行投票.请问问题,而不是回答者. (2认同)