Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.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# 如何让程序的下一部分在特定时间运行?_C# - Fatal编程技术网

C# 如何让程序的下一部分在特定时间运行?

C# 如何让程序的下一部分在特定时间运行?,c#,C#,我想输入程序下一部分执行的时间(控制台应用程序)。类似的情况如下: Console.ReadLine(); 但是有一个在给定时间执行的计时器。 作为一个例子,我想在10:00:00(GMT)运行代码,所以我输入这个时间,然后在10:00:00运行代码的下一部分。 就像是密码中的一站,直到那一刻到来。 我知道我不擅长解释,因为我不是英语,但我正在努力。 谢谢大家! 尝试使用任务计划程序 (第三方或无第三方参与) 作为一个非常基本的解决方案,您可以循环等待,直到所需的时间 var input

我想输入程序下一部分执行的时间(控制台应用程序)。类似的情况如下:

Console.ReadLine();
但是有一个在给定时间执行的计时器。 作为一个例子,我想在10:00:00(GMT)运行代码,所以我输入这个时间,然后在10:00:00运行代码的下一部分。 就像是密码中的一站,直到那一刻到来。 我知道我不擅长解释,因为我不是英语,但我正在努力。
谢谢大家!

尝试使用任务计划程序

  • (第三方或无第三方参与)

作为一个非常基本的解决方案,您可以循环等待,直到所需的时间

var input = Console.ReadLine();
var time = TimeSpan.Parse(input);
var waitTill = DateTime.Now.Date + time;
var stopEvent = new ManualResetEvent();
while (DateTime.Now <= time && !stopEvent.WaitOne(30000){
    // Just wait
}
// Do next stuff
var input=Console.ReadLine();
var time=TimeSpan.Parse(输入);
var waitTill=DateTime.Now.Date+time;
var stopEvent=新的手动重置事件();

while(DateTime.Now一种方法是将输入解析为
DateTime
,然后启动一个新线程,只等待该时间到达,然后执行某些操作。这样,您的程序保持活动状态,但其他代码在正确的时间运行

例如:

var dummyText = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " + 
    "Vivamus vitae velit venenatis, malesuada sapien non, ultricies risus. " + 
    "Quisque magna risus, pulvinar in semper sit amet, tempus suscipit diam. " +
    "Cras eget posuere sem, maximus vestibulum tortor. Etiam sodales sit amet " +
    "eros non dapibus. Cras pellentesque eleifend risus, quis placerat nulla " +
    "vulputate a. Duis erat erat, congue sed justo at, hendrerit varius nunc. ";

Console.Write("What time should the text turn red: ");
var timeInput = DateTime.Parse(Console.ReadLine());  // Enter something like "12:15 PM"

// Start a background task that waits for the specified time to arrive
Task.Factory.StartNew(() =>
{
    while (DateTime.Now < timeInput) Thread.Sleep(1000);  // Check time every second
    Console.ForegroundColor = ConsoleColor.Red;           // Change text color
});

// Endless loop that writes out one character of 
// text at a time so we can see when it turns red
for(int i = 0; ; i++)
{
    if (i == dummyText.Length) i = 0;
    Console.Write(dummyText[i]);
    Thread.Sleep(150);
}
var dummyText=“Lorem ipsum door sit amet,concetetur adipising elit.”
“维尼纳提斯万岁,智者万岁,别有用心。”+
“魁北克·马格纳·里苏斯(Quisque magna risus),普尔文纳(pulvinar)在塞姆佩尔·西特(semper sit amet),坦帕斯·苏西比特(tempus suscipit diam)。”+
“从扫描电镜上看,前庭大肌扭曲。苏打水坐在床上”+
“爱欲不可侵犯。粗俗的佩伦特斯克勒伊芬德·里索斯,无名小卒”+
“这是一种多年生植物,它是一种凝结物,是一种变种植物。”;
Console.Write(“文本何时变为红色:”);
var timeInput=DateTime.Parse(Console.ReadLine());//输入类似“12:15 PM”的内容
//启动等待指定时间到达的后台任务
Task.Factory.StartNew(()=>
{
while(DateTime.Now
以上是基于我的理解,即您希望程序在等待时间的同时保持积极地做一些事情。如果您只想让整个事情等待,那么您不需要额外的任务。您所需要的只是一行休眠,直到经过的时间到达:

// Pause code execution until the specified time arrives
while (DateTime.Now < timeInput) Thread.Sleep(100);
//暂停代码执行,直到指定的时间到达
while(DateTime.Now
如果您正在从
控制台阅读此内容
如何阻止用户关闭应用程序?从而阻止代码在给定时间执行?我认为这也取决于此操作系统的用途。是否仅适用于Windows?是否希望它与平台无关?很难为我解释,我想做一个解释n可以在某个时间内输入的输入,例如10:00:00。此时(控制台保持打开状态)该程序继续工作。我目前只在Windows上工作。您能否将输入解析为
DateTime
,然后启动一个新线程,等待该时间到达,然后执行某些操作?也许您的意思示例会有所帮助。