C#BackgroundWorker-最好将结果保存到文件本身或使用ProgressChanged
本文关键字:ProgressChanged 存到文件 结果 C#BackgroundWorker- | 更新日期: 2023-09-27 17:57:40
我是多线程编程的新手。在我的C#项目中,我有一个运行长任务的类;这个类有一个BackgroundWorker对象作为它的属性之一。用户界面实例化我的类,然后在BackgroundWorker上调用RunWorkerSync。
每隔一段时间,我的类就会将结果保存到一个文件中;结果是一个复杂的对象(几个矩阵、字符串等)。然后,它通过ProgressChanged事件报告其进度。然后,我的简单GUI获取ProgressChanged,并将进度百分比放在表单的标签上
我想到了一个易于实施的替代方案。我的类可以将结果作为ProgressChangedEventArgs.UserState中ProgressChanged事件的一部分返回。这是个好主意吗?
保存到文件可能是一项长期运行的操作。它不应该在UI线程上运行。将其保留在BackgroundWorker
上,或者如果可以的话,切换到async/await。