Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C语言中使用定时器触发动作#_C#_Timer - Fatal编程技术网

C# 在C语言中使用定时器触发动作#

C# 在C语言中使用定时器触发动作#,c#,timer,C#,Timer,我正在用C#4.0开发一个应用程序。我需要根据当前系统时间调用一个方法。我可以用定时器控制吗?如果有人能告诉我怎么做就好了 谢谢, Rakesh.您可以使用以下代码 System.Timers.Timer _timer1 = new System.Timers.Timer(); _timer1.Elapsed += new ElapsedEventHandler(_timer1_Elapsed); //1 second _timer1.Interval = 1000; _timer1.Start

我正在用C#4.0开发一个应用程序。我需要根据当前系统时间调用一个方法。我可以用定时器控制吗?如果有人能告诉我怎么做就好了

谢谢,
Rakesh.

您可以使用以下代码

System.Timers.Timer _timer1 = new System.Timers.Timer();
_timer1.Elapsed += new ElapsedEventHandler(_timer1_Elapsed);
//1 second
_timer1.Interval = 1000;
_timer1.Start();

//this event will be fired each 1 second
private void _timer1_Elapsed(object sender, ElapsedEventArgs e)
{
}

您可以使用下面的代码

System.Timers.Timer _timer1 = new System.Timers.Timer();
_timer1.Elapsed += new ElapsedEventHandler(_timer1_Elapsed);
//1 second
_timer1.Interval = 1000;
_timer1.Start();

//this event will be fired each 1 second
private void _timer1_Elapsed(object sender, ElapsedEventArgs e)
{
}

你应该能,是的。Ghyath Serhal已经告诉过您一般如何使用timer类。唯一缺少的是如何在特定的时间做这件事。这应该很容易——当你设置计时器时,只需取你希望动作发生的时间和当前时间,找出以秒为单位的差异,并用它来填充间隔。您还需要将AutoReset属性设置为false,这样它就不会立即开始倒计时

如果你改变了事件发生的时间,你只需要用一个触发器将其挂接,并将计时器更新为新的时间


编辑以添加:如果有人更改可能导致此计划出现问题的系统时间。我不确定你是否可以轻松地点击它来重置你的计时器。但我猜可能与此无关。:)

你应该能够,是的。Ghyath Serhal已经告诉过您一般如何使用timer类。唯一缺少的是如何在特定的时间做这件事。这应该很容易——当你设置计时器时,只需取你希望动作发生的时间和当前时间,找出以秒为单位的差异,并用它来填充间隔。您还需要将AutoReset属性设置为false,这样它就不会立即开始倒计时

如果你改变了事件发生的时间,你只需要用一个触发器将其挂接,并将计时器更新为新的时间

编辑以添加:如果有人更改可能导致此计划出现问题的系统时间。我不确定你是否可以轻松地点击它来重置你的计时器。但我猜可能与此无关。:)

你可能(在不了解你的应用程序的情况下,我不能肯定)想换一种角度看它。你可以很容易地编写一个应用程序,它可以无所事事,除了轮询时间之外什么都不做,然后运行你需要做的任何事情,但这会让你的应用程序无所事事,大部分时间只占用资源

也许你可以考虑创建一个预定的任务,它可以让你在任何时候运行你的应用程序。任务调度器在中有文档记录,在中有一个托管包装器。(它说它可以在XP或更好的环境下工作,所以希望它能满足您的需求)

祝你好运,

你可能想换一种角度看它(我不能肯定你对你的应用程序还不太了解)。你可以很容易地编写一个应用程序,它可以无所事事,除了轮询时间之外什么都不做,然后运行你需要做的任何事情,但这会让你的应用程序无所事事,大部分时间只占用资源

也许你可以考虑创建一个预定的任务,它可以让你在任何时候运行你的应用程序。任务调度器在中有文档记录,在中有一个托管包装器。(它说它可以在XP或更好的环境下工作,所以希望它能满足您的需求)


祝你好运,

计时器的问题在于,它不能保证在正确的时间调用经过的事件-您所知道的是,它将在大于间隔的时间之后调用。 解决方案取决于您感兴趣的时间分辨率-例如,如果您需要检查每个小步舞步,如果发生特定事件,您可以设置一个计时器,在每个小步舞步引发事件,然后使用DateTime。现在检查系统时间是否为事件应发生的时间


一个好的策略是,根据系统的繁忙程度,始终期望计时器已过事件在设置的时间间隔后几秒钟发生。

计时器的问题在于,它不能保证已过事件将在正确的时间被调用-您所知道的是,它将在大于时间间隔的时间后被调用间隔 解决方案取决于您感兴趣的时间分辨率-例如,如果您需要检查每个小步舞步,如果发生特定事件,您可以设置一个计时器,在每个小步舞步引发事件,然后使用DateTime。现在检查系统时间是否为事件应发生的时间

一个好的策略是,根据系统的繁忙程度,始终期望计时器已过事件在设置的间隔数秒后发生