【问题标题】:C# check for new application items when app is runningC# 在应用程序运行时检查新的应用程序项
【发布时间】:2011-07-04 15:27:18
【问题描述】:

我有一个报告系统,其中包含可供用户运行的报告列表。我想要做的是定期让应用程序在 SQL 服务器上查找新报告并重新填充可用报告列表。

但我想在不锁定应用程序的情况下执行此操作,我希望这是无缝的,甚至不让用户知道它正在发生。

我怎样才能以最有效的方式做到这一点?

谢谢

【问题讨论】:

    标签: c# refresh auto-update windows


    【解决方案1】:

    如果我理解您的问题,您希望在不影响用户的情况下让后台线程执行此工作,并在完成后更新 GUI。

    查看 BackgroundWorker 辅助类。

    【讨论】:

    • 在 BackgroundWorker 类中,为了确保我需要正确引用类中的主窗体,并使任何将在主窗体上公开更新的控件是否正确?
    • 有很多方法来处理它,但公共控件/变量是最简单的。但是,您可以了解 Invoke - 因为不允许从错误的线程修改控件。
    【解决方案2】:

    我建议使用后台线程进行轮询。您可以启动一个新的 Thread 对象并轮询服务器,在每次检查后休眠。如果您发现更改,您可以获取数据,然后您需要调用 Invoke 来更新 GUI,因为这无法在其他线程上完成。

    另一种方法是使用计时器并在 Tick 事件中进行检查,但如果检查需要很长时间(如果您的服务器繁忙或有表锁,则可能需要很长时间)然后它将阻止您的应用程序,因此我建议您不要使用这种方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-16
      • 2011-02-13
      • 1970-01-01
      • 2021-06-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多