Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在提供Console.Readline()之前,不会执行ThreadStart委托_C#_Multithreading - Fatal编程技术网

C# 在提供Console.Readline()之前,不会执行ThreadStart委托

C# 在提供Console.Readline()之前,不会执行ThreadStart委托,c#,multithreading,C#,Multithreading,我对ThreadStart委托有一些问题。在我提供一个函数并启动线程之后,实际上什么都没有发生。我需要添加Console.Readline()将消息写入文件。为什么会这样 using System; using System.IO; using System.Threading; using System.Threading.Tasks; namespace ThreadStart { class Program { static void Main(strin

我对ThreadStart委托有一些问题。在我提供一个函数并启动线程之后,实际上什么都没有发生。我需要添加
Console.Readline()
将消息写入文件。为什么会这样

using System;
using System.IO;
using System.Threading;
using System.Threading.Tasks;

namespace ThreadStart
{
    class Program
    {
        static void Main(string[] args)
        {
            Thread thread = new Thread(new System.Threading.ThreadStart(() =>
            {
               int messageSeq = 0;

               while (messageSeq < 5)
               {
                   File.AppendAllText(@"c:\Test\write.txt", DateTime.Now.ToString() + Environment.NewLine);
                   messageSeq++;
                   Thread.Sleep(TimeSpan.FromMinutes(1));
               }
            }));
            thread.IsBackground = true;
            thread.Start();
            //Console.ReadLine();
        }
    }
}
使用系统;
使用System.IO;
使用系统线程;
使用System.Threading.Tasks;
名称空间ThreadStart
{
班级计划
{
静态void Main(字符串[]参数)
{
线程线程=新线程(新的System.Threading.ThreadStart(()=>
{
int messageSeq=0;
while(messageSeq<5)
{
File.AppendAllText(@“c:\Test\write.txt”,DateTime.Now.ToString()+Environment.NewLine);
messageSeq++;
线程睡眠(TimeSpan.FromMinutes(1));
}
}));
thread.IsBackground=true;
thread.Start();
//Console.ReadLine();
}
}
}
我没有多线程应用程序方面的经验,因此可能缺少一些简单的东西

线程可以是背景线程,也可以是前景线程。后台线程与前台线程相同,只是后台线程不阻止进程终止

您告诉线程不要强制应用程序保持运行,然后通过从
Main
方法返回让应用程序关闭

Console.ReadLine()
将停止应用程序从
Main
返回,并给线程时间来完成其工作

请注意,对Start的调用不会阻止调用线程

线程的
Start
方法不会阻止调用线程。这意味着它立即返回~并且调用线程继续执行

如果标准输入设备是键盘,ReadLine方法将一直阻塞,直到用户按下Enter键

Console.ReadLine()
会阻止调用线程,直到用户在控制台中点击enter/return(生成新行)。

线程可以是背景线程,也可以是前景线程。后台线程与前台线程相同,只是后台线程不阻止进程终止

您告诉线程不要强制应用程序保持运行,然后通过从
Main
方法返回让应用程序关闭

Console.ReadLine()
将停止应用程序从
Main
返回,并给线程时间来完成其工作

请注意,对Start的调用不会阻止调用线程

线程的
Start
方法不会阻止调用线程。这意味着它立即返回~并且调用线程继续执行

如果标准输入设备是键盘,ReadLine方法将一直阻塞,直到用户按下Enter键


Console.ReadLine()
会阻止调用线程,直到用户在控制台中点击enter/return(导致出现新行)。

一旦
Main
完成,整个应用程序就会关闭
Console.ReadLine
延迟
Main
的完成,给你额外的线程时间来完成它的工作。如果你将IsBackground设置为false,这将保持进程运行,直到线程完成。一旦
Main
完成,整个应用程序将关闭
Console.ReadLine
延迟
Main
的完成,给你额外的线程时间来完成它的工作。如果你将IsBackground设置为false,这将保持进程运行,直到线程完成。不用担心,祝你在多线程中的冒险好运!不用担心,祝你在多线程中的冒险好运!