我们有时希望设计这样的程序,周期性的访问ftp服务器执行一些文件查询或下载,有时有的ftp服务器网络很好,速度很快,有时有的服务器网络较差,访问较慢,也就是说,查询或下载时间并不稳定,如果把定时器的时间指定为一个固定值,较大的值,时间浪费较多,较小的值,有时没查询完,定时器就启动下一次查询,解决办法也许较多,这里介绍一个非常好的解决办法,很实用,定时器选System.Threading空间下的Timer,在执行后台任务时,这个是最好用的定时器,把period参数设置为TimeOut.Infinite,这时定时器Timer只执行一次,然后在回调方法中,当完成大量复杂任务后,再设置Change方法,把dueTime设置要间隔的时间,把period再次设置为TimeOut.Infinite值,这样定时器再次被设置为执行一次,如此反复。代码见下:
class Program
{
private static Timer timer;
private static CancellationTokenSource cts;
static void Main(string[] args)
{
cts = new CancellationTokenSource();
timer = new Timer(DoWork, cts, Timeout.Infinite, Timeout.Infinite);
timer.Change(0, Timeout.Infinite);
Console.WriteLin