【发布时间】:2011-07-04 15:27:18
【问题描述】:
我有一个报告系统,其中包含可供用户运行的报告列表。我想要做的是定期让应用程序在 SQL 服务器上查找新报告并重新填充可用报告列表。
但我想在不锁定应用程序的情况下执行此操作,我希望这是无缝的,甚至不让用户知道它正在发生。
我怎样才能以最有效的方式做到这一点?
谢谢
【问题讨论】:
标签: c# refresh auto-update windows
我有一个报告系统,其中包含可供用户运行的报告列表。我想要做的是定期让应用程序在 SQL 服务器上查找新报告并重新填充可用报告列表。
但我想在不锁定应用程序的情况下执行此操作,我希望这是无缝的,甚至不让用户知道它正在发生。
我怎样才能以最有效的方式做到这一点?
谢谢
【问题讨论】:
标签: c# refresh auto-update windows
如果我理解您的问题,您希望在不影响用户的情况下让后台线程执行此工作,并在完成后更新 GUI。
查看 BackgroundWorker 辅助类。
【讨论】:
我建议使用后台线程进行轮询。您可以启动一个新的 Thread 对象并轮询服务器,在每次检查后休眠。如果您发现更改,您可以获取数据,然后您需要调用 Invoke 来更新 GUI,因为这无法在其他线程上完成。
另一种方法是使用计时器并在 Tick 事件中进行检查,但如果检查需要很长时间(如果您的服务器繁忙或有表锁,则可能需要很长时间)然后它将阻止您的应用程序,因此我建议您不要使用这种方法。
【讨论】: