从其他班级不断地告知形式的进展形式

时间:2012-01-19 15:03:09

标签: c# forms events delegates progress

我想在一个类中上传一个文件,该类不知道上传进度可见的表单。有没有办法通过事件或代表以某种方式通知它? 此刻我可以直接设置进度,但是我希望这个类较少依赖于视图实现。 感谢

1 个答案:

答案 0 :(得分:1)

当然。您需要在上传类中实现某种“ProgressMade”事件,然后表单将订阅(或者由某个中间人订阅,如果这是您的模式)。然后,当您的类检测到数据已发送时,您应该引发“ProgressMade”事件。

如何发生取决于您的班级用于执行上传的内容。如果您正在使用StreamWriter,那么很遗憾,这些类没有监视进度的“被动”事件。一切都没有丢失;你应该能够从你正在使用的类中派生出一个可以用来触发ProgressMade的“WritePerformed”。看看这个答案:how to increase progressbar when i write xml?。它几乎适用于任何作家。如果你正在使用一些不那么抽象的东西,比如Socket,那么你应该能够跟踪你推入连接的字节数。