C# 在8:00和20:00 分别执行两个任务
时间: 2024-09-23 14:09:24 浏览: 31
在C#中,你可以通过定时任务或者异步编程来实现这个需求。这里我们可以使用`System.Threading.Tasks.Task`类以及`Task.Run`方法来创建并安排任务执行。
首先,确保你有一个单独的委托(Delegate)或方法,这两个任务将要执行:
```csharp
public void ExecuteTaskAtEight()
{
// 在8:00执行的任务代码
}
public void ExecuteTaskAtTwenty()
{
// 在20:00执行的任务代码
}
```
然后你可以使用`Task.Run`方法,传入对应的委托或方法,再加上`DateTime`构造函数来指定时间点:
```csharp
// 定义任务执行时间
DateTime eightOclock = DateTime.Now.AddHours(8);
DateTime twentyOclock = DateTime.Now.AddHours(20);
// 创建任务并设置延迟
var eightAmTask = Task.Run(() => ExecuteTaskAtEight, TaskCreationOptions.LongRunning, eightOclock - DateTime.Now);
var eightPmTask = Task.Run(() => ExecuteTaskAtTwenty, TaskCreationOptions.LongRunning, twentyO'clock - DateTime.Now);
// 立即开始执行
eightAmTask.Start();
eightPmTask.Start();
// 使用ContinueWith可以添加完成后的行为
eightAmTask.ContinueWith(t =>
{
if (t.IsFaulted)
Console.WriteLine($"Eight AM task faulted: {t.Exception}");
else
Console.WriteLine("Eight AM task completed");
}, TaskContinuationOptions.ExecuteSynchronously);
eightPmTask.ContinueWith(t =>
{
if (t.IsFaulted)
Console.WriteLine($"Eight PM task faulted: {t.Exception}");
else
Console.WriteLine("Eight PM task completed");
}, TaskContinuationOptions.ExecuteSynchronously);
```
请注意,上述代码假设当前是运行代码的实际时间,如果需要精确到分钟,可能需要调整`AddHours`部分。另外,你需要考虑系统重启后任务是否会重新执行,这通常需要使用Windows的调度服务或其他持久化的任务管理机制。