C#在应用程序运行时检查新的应用程序项

C#在应用程序运行时检查新的应用程序项,c#,refresh,auto-update,windows,C#,Refresh,Auto Update,Windows,我有一个报告系统,它有一个可供用户运行的报告列表。我希望能够定期让应用程序在SQL server上查找新报告,并重新填充可用报告列表 但我希望在不锁定应用程序的情况下实现这一点,我希望这是无缝的,甚至不让用户知道它正在发生 我怎样才能以最有效的方式做到这一点 谢谢我建议使用后台线程进行轮询。您可以启动一个新的线程对象并轮询服务器,每次检查后都会休眠。如果发现更改,可以获取数据,然后需要调用Invoke来更新GUI,因为这不能在其他线程上完成 另一种方法是使用计时器并在勾号事件内进行检查,但如果检

我有一个报告系统,它有一个可供用户运行的报告列表。我希望能够定期让应用程序在SQL server上查找新报告,并重新填充可用报告列表

但我希望在不锁定应用程序的情况下实现这一点,我希望这是无缝的,甚至不让用户知道它正在发生

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


谢谢

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


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

如果我理解您的问题,您希望有一个后台线程在不影响用户的情况下执行这项工作,并在完成时更新GUI


查看BackgroundWorker helper类。

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