在 c# 中不使用定时器 class 进行调度
Scheduling without use of timer class in c#
我需要一个建议。如何在不使用定时器 class 的情况下在 C# 中进行调度,因为它占用内存。虽然如果高效地使用 Timer 不是问题,但我需要一个长期的调度过程。请分享您在不使用计时器的情况下进行日程安排的建议。
您可以尝试像这样的基本操作:
public class TimeSchedule
{
private bool hasRun;
private DateTime targetDate = new DateTime(2015,5,26);
private void Schedule()
{
while (!hasRun)
{
if (DateTime.Now.Date < targetDate)
{
//Do something
hasRun = true;
}
else
{
Thread.Sleep(1000);
}
}
}
public void Start()
{
var thread = new Thread(Schedule);
thread.Start();
}
}
一切都会占用内存。
如果你只想延迟 x 的某些事情,你可以直接睡觉,但这对于大多数用法来说是一个糟糕的模式,但对于一个简单的控制台类型的应用程序,你想暂停并在 x 分钟内做一些事情,它会是美好的。如果你在异步代码中,你也可以使用
await Task.Delay(10000);
如果您希望在一天中的特定时间 运行 执行某些操作,那么如评论中所述,windows 计划任务可能会更好。例如,没有仅在 11:11AM 时执行 X() 的服务。
另外,阅读这篇文章C# Timer and memory leak and When my timer ticks.... .NET Memory Leak(它们都归结为非问题)
我需要一个建议。如何在不使用定时器 class 的情况下在 C# 中进行调度,因为它占用内存。虽然如果高效地使用 Timer 不是问题,但我需要一个长期的调度过程。请分享您在不使用计时器的情况下进行日程安排的建议。
您可以尝试像这样的基本操作:
public class TimeSchedule
{
private bool hasRun;
private DateTime targetDate = new DateTime(2015,5,26);
private void Schedule()
{
while (!hasRun)
{
if (DateTime.Now.Date < targetDate)
{
//Do something
hasRun = true;
}
else
{
Thread.Sleep(1000);
}
}
}
public void Start()
{
var thread = new Thread(Schedule);
thread.Start();
}
}
一切都会占用内存。
如果你只想延迟 x 的某些事情,你可以直接睡觉,但这对于大多数用法来说是一个糟糕的模式,但对于一个简单的控制台类型的应用程序,你想暂停并在 x 分钟内做一些事情,它会是美好的。如果你在异步代码中,你也可以使用
await Task.Delay(10000);
如果您希望在一天中的特定时间 运行 执行某些操作,那么如评论中所述,windows 计划任务可能会更好。例如,没有仅在 11:11AM 时执行 X() 的服务。
另外,阅读这篇文章C# Timer and memory leak and When my timer ticks.... .NET Memory Leak(它们都归结为非问题)