C# 写一个多线程分别计时的程序
时间: 2024-11-30 12:19:44 浏览: 1
在C#中,你可以使用`System.Threading.Tasks`命名空间提供的Task类和Timer类来创建一个多线程同时计时的程序。下面是一个简单的例子:
```csharp
using System;
using System.Threading;
using System.Threading.Tasks;
class Program
{
private static Timer timerA;
private static Timer timerB;
static async Task Main(string[] args)
{
// 创建两个独立的计时器
timerA = new Timer(DoSomething, null, TimeSpan.FromSeconds(5), TimeSpan.FromSeconds(5)); // 计时5秒,周期5秒
timerB = new Timer(DoSomethingElse, null, TimeSpan.FromSeconds(7), TimeSpan.FromSeconds(7));
Console.WriteLine("开始计时...");
try
{
// 等待任务完成,或者用户按下Ctrl+C中断
await Task.Run(() => Console.CancelKeyPress);
}
catch (OperationCanceledException)
{
Console.WriteLine("计时被取消.");
}
finally
{
// 关闭计时器
timerA.Dispose();
timerB.Dispose();
}
Console.WriteLine("程序已结束.");
}
private static void DoSomething(object state)
{
Console.WriteLine($"定时器A运行,当前时间:{DateTime.Now}");
}
private static void DoSomethingElse(object state)
{
Console.WriteLine($"定时器B运行,当前时间:{DateTime.Now}");
}
}
```
在这个程序中,我们创建了两个定时器,一个每隔5秒执行一次`DoSomething`方法,另一个每隔7秒执行`DoSomethingElse`方法。当用户按下Ctrl+C时,会引发一个`OperationCanceledException`,这时我们会关闭计时器。
阅读全文