我最近开始使用C#在WinForms中编程。我有一个要求,我需要搜索一组文件夹和子文件夹,并在我搜索时将状态信息显示到文本框 -
查找文件夹“C:\ Windows”...
找到8个文件...
将文件1中的8复制到“D:\ Temp”...
我有一个方法可以完成所有的搜索工作。我不知道如何定期向文本框显示状态消息(如上所述)。目前,表单等待方法完成,并一次显示所有消息。我希望随着方法的进展逐一显示它们。
提前致谢。
答案 0 :(得分:2)
要正确解决此问题,您的搜索功能需要在后台线程上运行。如果在UI线程上进行搜索,它将阻止对显示的更新,从而防止显示定期状态消息。
在WinForms应用程序中执行此操作的最简单方法是使用BackgroundWorker。它至少支持在后台运行任务并将进度信息返回给UI线程。此外,还有许多在线提供的教程可帮助您开始使用解决方案。
答案 1 :(得分:1)
使用BackgroundWorkerThread和ReportStatus函数。这样,您的UI将在搜索发生时响应。
答案 2 :(得分:1)
运行在单独线程上执行搜索的方法(如果您还没有这样做)。使用async delegate features in .NET非常容易。
然后,您可以使用Control.BeginInvoke()从工作线程写入文本框 - 您必须执行此操作,因为对UI控件的访问权限与单个UI线程相关联。
您还可以创建background worker thread并使用ReportProgress方法向UI通知更新。这里有fairly complete example这种方法可以下载和检查。