我最近开始使用C#在WinForms中编程。我有一个要求,我需要搜索一组文件夹和子文件夹,并显示状态信息到一个文本框,因为我这样搜索 -将状态消息异步写入文本框?
查找文件夹“C:\ Windows”...
找到8个文件...
复制文件的8至“d:\ TEMP” ......
我有做所有的搜索和东西的方法。我不知道如何定期向文本框显示状态消息(如上所述)。目前,表单等待方法完成,并一次显示所有消息。随着方法的进展,我希望它们能一个接一个地显示出来。
在此先感谢。
我最近开始使用C#在WinForms中编程。我有一个要求,我需要搜索一组文件夹和子文件夹,并显示状态信息到一个文本框,因为我这样搜索 -将状态消息异步写入文本框?
查找文件夹“C:\ Windows”...
找到8个文件...
复制文件的8至“d:\ TEMP” ......
我有做所有的搜索和东西的方法。我不知道如何定期向文本框显示状态消息(如上所述)。目前,表单等待方法完成,并一次显示所有消息。随着方法的进展,我希望它们能一个接一个地显示出来。
在此先感谢。
使用BackgroundWorkerThread和ReportStatus函数。这样,您的用户界面将在搜索时发生响应。
运行在单独的线程上执行搜索的方法(如果您尚未这样做)。使用async delegate features in .NET非常简单。
然后,您可以使用Control.BeginInvoke()从工作线程写入文本框 - 您必须这样做,因为访问UI控件sis会被关联到单个UI线程。
您也可以创建一个background worker thread并使用ReportProgress方法通知UI的更新。这里有一个fairly complete example可供下载和检查。
为了正确解决这个问题,您的搜索功能需要在后台线程上运行。如果搜索发生在UI线程上,它将阻止更新显示,防止显示周期性状态消息。
在WinForms应用程序中执行此操作的最简单方法是使用BackgroundWorker。它至少支持在后台运行任务并将进度信息返回给UI线程。此外,还有很多教程可以在线获得,让您开始使用解决方案。