2011-08-04 27 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

使用不同值的字符串构建私有方法,并且在出现错误时只需获取并将值设置为适当的消息框。可以将其分配为全局变量。