如何解决并行编程和具有数据表的数据集
| 我有一个taskfactory应用程序,该应用程序生成新任务以使用多个类来完成处理。有时似乎一切正常,但偶尔会出现IOEXception错误。最新的错误涉及数据集和数据表的使用,其中在每个运行的进程中,我都访问一个数据库表以提取100000个ID,这些ID用于我的进程中。为此,我将数据表添加到数据集中,并在流程的不同部分中使用该数据表。 创建新任务时,我假设它将在内存中生成自己的数据表和数据集,因为新进程涉及所涉及类的新实例,因此它应该是线程安全的。但是我得到了错误 \'数据表已经属于该数据集\' 现在,在研究之后,我发现您不能在同一集合中创建多个数据表。因此,还是有这种情况吗?还是应该考虑使用列表等其他数据结构?Public class tprocess
....
....
public shared dsCountry as new dataset
public shared dstable as new datatable
public shared sub main()
do_processing()
end sub
public shared do_processing()
try
dscountry.tables.add(dsTable)
...\' sql steps to get data with sqldatareader
解决方法
听起来您正在共享同一个ѭ1,并在该DS中创建新的
DataTable
实例。是这样吗
这可能很棘手。例如,这将使用数据集的相同实例:
void Method()
{
DataSet ds = null;
Task t1 = Task.Factory.StartNew(delegate {ds = new DataSet(); /*work with ds */});
Task t2 = Task.Factory.StartNew(delegate {ds = new DataSet(); /*work with ds */});
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。