定时器时间跨度,我需要在不同的时间触发4个不同的动作
Timer timespan, I need to trigger 4 different actions at different times
我正在尝试在项目中使用计时器。但我真的觉得我缺乏大量关于定时器的知识。我正在制作一个项目,我需要根据经过的时间至少执行 4 种不同的操作。我用了很好的答案
这让 med 很高兴,因为我可以很容易地使用它,虽然不理解它 100%
但是 - 当我制作 2 个计时器时,它们都会在第一个计时器触发时触发,这是第一次。然后计时器恢复正常时间表。
public static void StartMSGT()
{
var startTimeSpan = TimeSpan.Zero;
var startTimeSpan2 = TimeSpan.Zero;
var periodTimeSpan = TimeSpan.FromSeconds(5);
var periodTimeSpan2 = TimeSpan.FromMinutes(2);
Console.WriteLine("timer have started!");
System.Threading.Thread.Sleep(5000);
var timer = new System.Threading.Timer((e) =>
{
Console.WriteLine("Timer hits");
}, null, startTimeSpan, periodTimeSpan);
var timer2 = new System.Threading.Timer((e) =>
{
Console.WriteLine("Timer2 hits");
}, null, startTimeSpan2, periodTimeSpan2);
}
这是我的结果:
10 秒后开始
5 秒后开始
计时器开始了!
等待比赛开始
定时器 2 命中
计时器命中
计时器命中
计时器命中
计时器命中
定时器命中
在第二个计时器中,我和第一个计时器一样有“startTimespan”,但这似乎没有什么不同。
如果有人能告诉我它是如何工作的简单解释,也许还有解决方案。非常感谢。
使用同一周期启动定时器:
var timer = new System.Threading.Timer((e) =>
{
Console.WriteLine("Timer hits");
}, null, periodTimeSpan, periodTimeSpan);
var timer2 = new System.Threading.Timer((e) =>
{
Console.WriteLine("Timer2 hits");
}, null, periodTimeSpan2, periodTimeSpan2);
this Timer
constructor中的第三个参数是:
dueTime
The amount of time to delay before callback is invoked, in milliseconds. Specify Infinite to prevent the timer from starting. Specify zero (0) to start the timer immediately.
因此,如果您指定 0
计时器将立即启动并调用第一个回调。
我正在尝试在项目中使用计时器。但我真的觉得我缺乏大量关于定时器的知识。我正在制作一个项目,我需要根据经过的时间至少执行 4 种不同的操作。我用了很好的答案 这让 med 很高兴,因为我可以很容易地使用它,虽然不理解它 100%
但是 - 当我制作 2 个计时器时,它们都会在第一个计时器触发时触发,这是第一次。然后计时器恢复正常时间表。
public static void StartMSGT()
{
var startTimeSpan = TimeSpan.Zero;
var startTimeSpan2 = TimeSpan.Zero;
var periodTimeSpan = TimeSpan.FromSeconds(5);
var periodTimeSpan2 = TimeSpan.FromMinutes(2);
Console.WriteLine("timer have started!");
System.Threading.Thread.Sleep(5000);
var timer = new System.Threading.Timer((e) =>
{
Console.WriteLine("Timer hits");
}, null, startTimeSpan, periodTimeSpan);
var timer2 = new System.Threading.Timer((e) =>
{
Console.WriteLine("Timer2 hits");
}, null, startTimeSpan2, periodTimeSpan2);
}
这是我的结果:
10 秒后开始
5 秒后开始
计时器开始了!
等待比赛开始
定时器 2 命中
计时器命中
计时器命中
计时器命中
计时器命中
定时器命中
在第二个计时器中,我和第一个计时器一样有“startTimespan”,但这似乎没有什么不同。
如果有人能告诉我它是如何工作的简单解释,也许还有解决方案。非常感谢。
使用同一周期启动定时器:
var timer = new System.Threading.Timer((e) =>
{
Console.WriteLine("Timer hits");
}, null, periodTimeSpan, periodTimeSpan);
var timer2 = new System.Threading.Timer((e) =>
{
Console.WriteLine("Timer2 hits");
}, null, periodTimeSpan2, periodTimeSpan2);
this Timer
constructor中的第三个参数是:
dueTime The amount of time to delay before callback is invoked, in milliseconds. Specify Infinite to prevent the timer from starting. Specify zero (0) to start the timer immediately.
因此,如果您指定 0
计时器将立即启动并调用第一个回调。