【发布时间】:2015-04-27 14:42:57
【问题描述】:
我已经构建了一个执行以下操作的表单:
- 抓取目录中的所有文件路径(文件采用指定的命名约定)
- 使用分隔符解析文件路径
- 以指定格式输出文本文件。
问题是某些目录包含数百个演出,这会冻结表单 UI,直到该过程完成。我已经阅读了有关后台工作人员的信息,据我了解,您的代码中的数据密集型部分属于 DoWork 方法。但是,当我尝试在 DoWork 方法中实现我的代码时,我遇到了“跨线程操作无效:”错误。我查找了错误,但我根本不明白如何在不重新修改程序的整个结构的情况下解决此错误。
我的代码非常冗长,但如果需要我可以提供。
【问题讨论】:
-
简短的总结代码会有很大帮助。但有一个猜测:也许您正在使用
BackgroundWorker之外的 GUI 做任何事情。这是导致此错误的典型原因。 -
请提供代码示例以更准确地查明问题。
-
当我单步执行代码时,它会在这个 if 语句中出错: if ((TB_path.TextLength > 0) && (TB_TrackingNum.Text != "") && (TB_OutputPath.Text != "" )) - 据我了解,这并没有对 GUI 做任何事情。
标签: c# multithreading backgroundworker