2011-08-04 26 views
0

我的程序在創建時立即將文件從一個文件夾移動到另一個文件夾。這些文件將以每秒50次左右的速度進入。該程序監視兩個文件夾,並將這兩個文件夾中的文件發送到計算機上的某些目錄。圍繞類和GUI移動數據

我想弄清楚的一件事是可能會彈出的錯誤。我想過使用messagebox.show讓用戶知道讓我們說「該文件夾不存在」,但是有10000個左右的文件無法移動,或者如果訪問目錄被拒絕,計算機可能會耗盡內存10000個彈出窗口。

另一種方法是在GUI控件上向用戶顯示消息,然後停止文件觀察器。問題是,我的folderwatcher類無法訪問我的GUI中的狀態欄。因此,如果狀態欄被稱爲消息,我不能簡單地將「messages.text」分配給來自folderwatcher類中拋出的異常的錯誤消息。

我被告知,將GUI的控制權交給folderwatcher類是不好的做法,因爲它違背了面向對象編程的目的。 (沿着這些線)。

所以,我想構建一個簡單存儲數據/狀態消息的類。我的GUI將掛鉤到該類,並且在發生錯誤時,folderwatcher類將更新它。發生這種情況時,我的GUI將會更新,並且messages.text會顯示用戶看到的錯誤。

我認爲這個概念會工作得很好,但我不知道從哪裏開始。如果您需要任何其他信息,我會很樂意提供,但反饋和提示/技巧是我正在尋找的。

此外,我的方法是構建一個單獨的類,其中持有信息的最佳方法來轉移類和GUI之間的錯誤消息?還是有更簡單的方法來做到這一點?

此致

tf.rz.謝謝你的幫助!非常感謝。

+0

任何不讓你的GUI(或任何其他人關心)可以訂閱的文件夾監視器發生事件的原因是什麼? –

+0

@Pete M:不是,這也是一種可行的方法,但它超出了我目前正在擴展的知識範圍。你能否告訴我如何實現你的想法? –

+3

有關它的價值,請參閱MSDN上的IObserver接口的此文檔。 http://msdn.microsoft.com/en-us/library/dd783449.aspx你的問題實際上是訂閱者/發佈者模式。 filewatcher「發佈」了一些東西(在這種情況下是錯誤),並且用戶界面對OnError事件「懷疑」。 – Icarus

回答

0

我已經通過另一個只包含一個字符串和一個事件處理程序的類將類和GUI掛鉤了。 GUI訂閱了事件處理程序,該類將創建新類的實例並修改該字符串。當字符串改變時,GUI將被更新並且用戶將看到該消息。感謝所有捐助的人!

0

使用不同值的字符串構建私有方法,並且在出現錯誤時只需獲取並將值設置爲適當的消息框。可以將其分配爲全局變量。