【发布时间】:2013-03-30 13:22:15
【问题描述】:
我真的在为此苦苦挣扎。我正在 Visual Studio 中创建一个 winforms 应用程序,需要一个每半小时计时一次的后台计时器 - 这样做的目的是从服务器上拉下更新。
我尝试了几种不同的方法,但都失败了,要么是由于教程/示例不佳,要么是我自己在 C# 中的缺点。我认为向您展示我迄今为止所做的尝试是浪费时间,因为我所尝试的似乎离目标很远。
有谁知道实现异步后台计时器的一种清晰而简单的方法,C# 新手很容易理解?
【问题讨论】:
-
我假设您使用的是
System.Timers.Timer? -
在我看来最重要的问题是:定时器运行时会发生多少工作?这将对您的程序的响应性产生什么影响。请注意,所有 WinForms 应用程序都在一个 UI 线程中运行,如果该线程突然忙于从服务器中提取一些数据,您的用户可能不喜欢它,所以问题是,您是否需要多线程解决方案。
-
这不是一个特别繁重的过程。只需从服务器获取数据表,然后根据表的内容运行一些 SQL。大多数时候无论如何都不会返回任何东西。
-
@Terfi:那么最好使用 System.Windows.Forms.Timer 和 System.Windows.Threading.DispatcherTimer。这些很方便,因为它们在 GUI 线程上执行代码,因此不需要显式调用调用。这些计时器适用于 GUI 的快速定期更新。如果代码运行时间更长,则应将 System.Threading.Timer 与显式 Invoke 一起用于更新部分
标签: c# winforms asynchronous timer