2011-02-25 108 views
2

我有一個報告系統,其中包含可供用戶運行的報告列表。我希望能夠做的是定期讓應用程序在SQL服務器上尋找新的報告並重新填充可用的報告列表。C#在應用程序運行時檢查新的應用程序項目

但是我想在不鎖定應用程序的情況下做到這一點,我希望這是無縫的,而不是讓用戶知道它正在發生。

我該如何做到最有效的方式?

謝謝

回答

2

如果我理解你的問題,你希望有一個後臺線程執行這項工作,而不影響用戶,並在完成後更新GUI。

看看BackgroundWorker助手類。

+0

在BackgroundWorker類中,爲了確保,我需要引用類中的主窗體並更正公共主窗體上的任何控件。 – mattgcon

+0

有很多方法來處理它,但公共控件/變量是最簡單的。但是,您可以瞭解Invoke - 因爲從錯誤的線程修改控件是不允許的。 –

2

我建議使用後臺線程來做投票。您可以啓動一個新的Thread對象並輪詢服務器,並在每次檢查後進入休眠狀態。如果您發現更改,您可以獲取數據,然後您需要調用Invoke來更新GUI,因爲這不能在其他線程上完成。

另一種方法是使用計時器並在Tick事件內執行檢查,但如果檢查花費很長時間(並且如果服務器很忙或者存在表鎖定,則可能需要很長時間),那麼它會阻止你的應用程序,所以我建議不要這種方法。

相關問題