c# 并行 timer数组
时间: 2023-10-19 14:25:22 浏览: 43
你可以使用C#的并行编程库来创建并行化的计时器数组。下面是一个简单的示例代码:
```csharp
using System;
using System.Threading.Tasks;
class Program
{
static void Main()
{
int timerCount = 10;
int[] timerIntervals = new int[timerCount];
// 设置每个计时器的间隔时间
for (int i = 0; i < timerCount; i++)
{
timerIntervals[i] = (i + 1) * 1000; // 每秒增加1000毫
相关问题
c# timer数组
在C#中,你可以使用`System.Timers.Timer`类来创建多个定时器,并将它们存储在一个数组中。下面是一个示例代码:
```csharp
using System;
using System.Timers;
class Program
{
static void Main(string[] args)
{
int timerCount = 5; // 定时器数量
// 创建Timer数组
Timer[] timers = new Timer[timerCount];
// 初始化每个定时器
for (int i = 0; i < timerCount; i++)
{
timers[i] = new Timer();
timers[i].Interval = (i + 1) * 1000; // 设置每个定时器的间隔时间,这里以递增的方式设置
timers[i].Elapsed += TimerElapsed; // 绑定事件处理程序
timers[i].AutoReset = true; // 设置为自动重置
}
// 启动每个定时器
foreach (var timer in timers)
{
timer.Start();
}
Console.WriteLine("按任意键停止定时器...");
Console.ReadKey();
// 停止每个定时器
foreach (var timer in timers)
{
timer.Stop();
}
}
static void TimerElapsed(object sender, ElapsedEventArgs e)
{
Console.WriteLine($"定时器触发:{e.SignalTime}");
}
}
```
上述代码创建了一个长度为`timerCount`的`Timer`数组,并初始化了每个定时器。每个定时器的间隔时间以递增的方式设置,从1秒到5秒不等。然后,通过循环启动每个定时器,并在按下任意键时停止所有定时器。
在`TimerElapsed`事件处理程序中,你可以编写你想要执行的代码,当定时器触发时会执行该事件处理程序。以上示例只是简单地打印出定时器触发的时间,你可以根据自己的需求进行修改。
c# 并行运行timer
要在C#中并行运行Timer,可以使用Task Parallel Library(TPL)提供的功能。以下是一个示例代码:
```csharp
using System;
using System.Threading;
using System.Threading.Tasks;
class Program
{
static void Main()
{
// 创建一个 Timer 对象
Timer timer = new Timer(TimerCallback, null, 0, 1000);
// 创建一个 CancellationTokenSource 对象,用于取消任务
CancellationTokenSource cts = new CancellationTokenSource();
// 创建并行任务
Task[] tasks = new Task[3]
{
Task.Factory.StartNew(() => DoWork(cts.Token)),
Task.Factory.StartNew(() => DoWork(cts.Token)),
Task.Factory.StartNew(() => DoWork(cts.Token))
};
// 等待所有任务完成
Task.WaitAll(tasks);
// 停止 Timer
timer.Dispose();
}
static void TimerCallback(object state)
{
Console.WriteLine("Timer callback executed.");
}
static void DoWork(CancellationToken cancellationToken)
{
while (!cancellationToken.IsCancellationRequested)
{
// 执行一些工作...
Console.WriteLine("Doing work...");
// 模拟工作的延迟
Thread.Sleep(2000);
}
}
}
```
在这个示例中,我们创建了一个Timer对象,并设置它的回调函数。然后,我们使用Task Parallel Library创建了3个并行任务,并在每个任务中执行DoWork方法。DoWork方法是一个无限循环,在循环内部执行一些工作,并使用Thread.Sleep模拟工作的延迟。任务会一直执行,直到取消标记被设置。最后,我们等待所有任务完成,并停止Timer对象。
请注意,为了在DoWork方法中能够检查取消标记,我们将CancellationToken作为参数传递给DoWork方法。这样,当我们调用cts.Cancel()时,任务会收到取消请求,并停止执行。
希望这能帮到你!