向OutputBuffer并行添加行时出错

时间:2017-03-31 08:50:10

标签: c# multithreading ssis parallel-processing

我遇到了一个问题,它确实让我疯狂:我必须处理一堆XML文件(类似于每天70k)并编写了一个Sourcecomponent,它在转换(XSL)和加载文件方面做得非常好(是的,我尝试过XML Source;不,它没有满足我的需求)。但是,我设计了源组件,以便首先将一定数量的数据加载到内存表中,并在达到此数量后将表中的数据发送到OutputBuffer,为了加快速度,我通过{ {1}}。第一部分 - 加载和转换 - 工作得非常好,我可以在几秒钟内加载一组200个文件。但是当谈到Parallel.For时,程序崩溃,报告各种类型的错误(错误的数据类型等)。如果我单独发送数据表的内容,一切似乎都有效。任何想法,为什么OutputBuffer.AddRow在从OutputBuffer.AddRow

中调用时崩溃

1 个答案:

答案 0 :(得分:1)

什么是OutputBuffer的类型?很可能,类型不是线程安全的,在调用方法时需要一些同步。 你能尝试锁定它的访问权限吗?而不是

OutputBuffer.AddRow(...)

类似

lock(OutputBuffer)
{
    OutputBuffer.AddRow(...);
}