所以我正在编写(或者更具体地说是添加)到dll文件,以便它可以每秒调用一个函数,该函数将一些数据发送到一个文件,然后由另一个程序读取。 我遇到的问题是我无法找到任何不涉及表单或控制台应用程序的计时系统,我只是希望这是在没有任何GUI,(或任何UI)的情况下发生的! 我已经研究过system.timers.timer,但是我可以告诉他需要一个控制台和。 这可能吗?如果是这样怎么样? 在此先感谢: - )
答案 0 :(得分:0)
答案 1 :(得分:0)
如果这只是一个后台应用程序,则不需要GUI。这一切都取决于它是如何被托管的(参见我关于安静的exe与服务的原始帖子的评论)。
以下是可能有用的基本教程:http://www.dotnetperls.com/timer
另请注意前一个问题,它非常相似:How to call a particular method every some seconds in c#?
正如Dmitriy在我输入这个时所说的那样,我建议在后台线程上运行它,因为它听起来像生成文件需要一些处理。您的主要代码应该只是建立程序,然后启动一个新线程来每秒(1000毫秒)完成工作。
有关该课程的信息,请访问:https://msdn.microsoft.com/en-us/library/system.threading.timer(v=vs.110).aspx
MSDN页面包含如何使用该类的可靠示例。在该示例中,名为StatusChecker.CheckStatus的方法可以完成后台工作。该函数用以下行指定:
TimerCallback tcb = statusChecker.CheckStatus;
在第二行之后的第二行启动计时器,并指示应该在1秒后提高回调,之后每1/4秒提高一次:
Timer stateTimer = new Timer(tcb, autoEvent, 1000, 250);
通过此处提供的文档和本示例,您应该能够确定如何进行必要的修改。
答案 2 :(得分:0)
什么会加载这个DLL - 如果是Windows服务;你可以在service.start事件中启动一个计时器对象;然后将您的重复功能放在timer.event中。这里有一些伪代码可以帮助您入门:
全球宣布:
System.Timers.Timer tmrMain = new System.Timers.Timer();
然后在main()函数中设置一个间隔 - 您希望调用函数的频率:
tmrMain.Interval = 20000; //in milliseconds
tmrMain.Start();
你还应该声明一个事件处理程序:
private void tmrMain_Tick(object sender, System.Timers.ElapsedEventArgs e)
{
//Your call to do something, every time this gets triggered at value specified in tmrMain.Interval
}
希望这有帮助。