Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#BackgroundWorker-最好将结果保存到文件本身或使用ProgressChanged?_C#_Multithreading - Fatal编程技术网

C#BackgroundWorker-最好将结果保存到文件本身或使用ProgressChanged?

C#BackgroundWorker-最好将结果保存到文件本身或使用ProgressChanged?,c#,multithreading,C#,Multithreading,我是多线程编程的新手。在我的C#项目中,我有一门课要做很长时间的工作;此类的属性之一是BackgroundWorker对象。用户界面实例化我的类,然后在BackgroundWorker上调用RunWorkerAsync 我的类经常将其结果保存到文件中;结果是一个复杂的对象(多个矩阵、字符串等)。然后,它通过ProgressChanged事件报告其进度。然后,我的简单GUI会选择ProgressChanged,并将进度百分比放在表单的标签上 我想到了一个容易实施的替代方案。我的类可以将结果作为Pr

我是多线程编程的新手。在我的C#项目中,我有一门课要做很长时间的工作;此类的属性之一是BackgroundWorker对象。用户界面实例化我的类,然后在BackgroundWorker上调用RunWorkerAsync

我的类经常将其结果保存到文件中;结果是一个复杂的对象(多个矩阵、字符串等)。然后,它通过ProgressChanged事件报告其进度。然后,我的简单GUI会选择ProgressChanged,并将进度百分比放在表单的标签上


我想到了一个容易实施的替代方案。我的类可以将结果作为ProgressChangedEventArgs.UserState中ProgressChanged事件的一部分传递回去。这是个好主意吗?

保存到文件可能是一个长期运行的操作。它不应该在UI线程上运行。将其保留在
BackgroundWorker上
或切换到async/Wait(如果可以)。

我的类可以将结果传回
。结果是什么,类型/大小?格兰特·温尼-也许我说得不够清楚。保存到文件不是为了报告进度。它们是两件不同的事情,只是碰巧同时发生而已。结果是写入不同文件的多个矩阵。如果用户在
BackgroundWorker
仍在处理时看到部分结果是有意义的,那么请确保将它们传递回
用户状态。
如果没有意义,请不要这样做,否则会混淆用户。