Joh*_*ler 3 c# console timer batch-file
对于必须按以下方式处理的 C# 控制台批处理应用程序,哪种计时器方法是最佳的:
相关问题:如何向 C# 控制台应用程序添加计时器
抱歉,这是一个完整的控制台应用程序...但这里有一个完整的控制台应用程序,可以帮助您入门。再次,我为这么多代码道歉,但其他人似乎都在给出一个“哦,你所要做的就是去做”的回答:)
using System;
using System.Collections.Generic;
using System.Threading;
namespace ConsoleApplication1
{
class Program
{
static List<RunningProcess> runningProcesses = new List<RunningProcess>();
static void Main(string[] args)
{
Console.WriteLine("Starting...");
for (int i = 0; i < 100; i++)
{
DoSomethingOrTimeOut(30);
}
bool isSomethingRunning = false;
do
{
foreach (RunningProcess proc in runningProcesses)
{
// If this process is running...
if (proc.ProcessThread.ThreadState == ThreadState.Running)
{
isSomethingRunning = true;
// see if it needs to timeout...
if (DateTime.Now.Subtract(proc.StartTime).TotalSeconds > proc.TimeOutInSeconds)
{
proc.ProcessThread.Abort();
}
}
}
}
while (isSomethingRunning);
Console.WriteLine("Done!");
Console.ReadLine();
}
static void DoSomethingOrTimeOut(int timeout)
{
runningProcesses.Add(new RunningProcess
{
StartTime = DateTime.Now,
TimeOutInSeconds = timeout,
ProcessThread = new Thread(new ThreadStart(delegate
{
// do task here...
})),
});
runningProcesses[runningProcesses.Count - 1].ProcessThread.Start();
}
}
class RunningProcess
{
public int TimeOutInSeconds { get; set; }
public DateTime StartTime { get; set; }
public Thread ProcessThread { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)