我有一个带有输入文本框、按钮和多行输出文本框的WinForms应用程序。在文本框中输入根路径。单击按钮调用函数,递归检查所有子目录,以获得适当的目录命名验证检查。结果被输出到多行文本框中。
如果递归工作是在一个单独的类中完成的,我有两个选项:
如果递归工作是在表示层中完成的,并且验证是在一个单独的类中完成的,那么我可以使用多线程。
哪种方法更干净?
发布于 2008-10-24 15:15:43
您不需要通过TextBox ByRef。它已经是一个引用对象了。只有当您计划为引用分配一个不同的或新的ByRef时,传递它才会有效果。
如果要在一个单独的类中完成这项工作,似乎只需将TextBox的内容作为字符串传递,并以字符串或一组字符串(数组或List<string>等)的形式返回结果。这比传递TextBox要好,以防有一天您决定使用另一种控件来存储这些信息。
发布于 2008-10-24 15:16:57
我会建议一些接近选项1的东西,我会有一个方法,把根目录作为输入,并返回一个目录的列表,这些目录是“坏的”。此外,我将在后台线程上调用该方法,以便在执行操作时不挂起UI。添加进度条或某种等待指示符,以便用户知道操作正在进行。
将textbox传递到该方法将不允许您将该方法用于其他任何事情。为了代码的重用(如果这对您来说很重要),我认为让方法返回一个列表并让回调方法知道如何显示数据是比较干净的。
发布于 2008-10-24 17:32:53
不确定这是否是跟进原问题的地方
那么,可以肯定地说,递归业务层函数不能在每次递归迭代中更新表示级控件吗?
https://stackoverflow.com/questions/233916
复制相似问题