通过这个建设
Parallel.ForEach(_targetTable.Rows.Cast<DataRow>(), ReadData);
启动了几个处理进程,其参数在_targetTable表中传递。您需要在应用程序窗口中显示每个进程的状态(例如,请求数据、接收数据、处理结果、保存),不需要进度本身(兴趣)。我读到你可以使用界面
IProgress<T>
但所有示例仅适用于一个线程。你能告诉我如何组织所有线程的当前状态的输出吗?
谢谢
通过这个建设
Parallel.ForEach(_targetTable.Rows.Cast<DataRow>(), ReadData);
启动了几个处理进程,其参数在_targetTable表中传递。您需要在应用程序窗口中显示每个进程的状态(例如,请求数据、接收数据、处理结果、保存),不需要进度本身(兴趣)。我读到你可以使用界面
IProgress<T>
但所有示例仅适用于一个线程。你能告诉我如何组织所有线程的当前状态的输出吗?
谢谢
根据文档,调用回调
IProgress时重定向到SynchronizationContext创建它的线程。因此,它是一种线程安全的进度报告方式。因此,您可以简单地创建一个 type 的字段,在那里
IProgress编写一个Progress带有回调的类的实例,并且一切都应该工作,无论迭代器是在一个线程中执行,还是在多个线程中执行。可以通过字段实现
或通过延迟初始化的属性
最好确保第一个调用
MyProgress来自 UI 线程。好吧,或者没有延迟初始化的属性
在迭代器中,只需调用
Report().可以传递任何类型的
IProgress对象,不一定是字符串。