timer本身不受程序主线程影响,和一个异步线程结果是一样的,考虑的阻塞,所以不能时间一定就直接在原来时间基础上加上时间间隔,而是每次都取当前系统时间,这样就不会产生误差积累,同样,即是有了异步线程,如果主线程运算量大或者等待数据也会造成阻塞,因此,最明智的办法就是在响应timer事件时,获取当前系统时间(如果是网络版应该获取网络时间,如SQL数据库中可以用select getdate()获取),例如显示时钟时,在timer事件中用ShowDateTime(DateTime.Now),而不是CurDateTime=CurDateTime.AddSeconds(1)。