TransactionScope抛出Transaction Timeout异常

时间:2017-04-05 10:29:02

标签: c# transactions transactionscope

我正在创建一个基本上每24小时运行一次的Windows服务,从计算机上的文件中获取数据并将数据放入数据库。

共有27个文件,其中5个一个接一个地运行,然后其他22个文件被生成新线程并同时运行。

我目前面临的问题是,在我的TransactionScope的using语句结束时,我调用Complete()运行正常,但是一旦使用了using语句的结尾(最后一个括号),就会发生TransactionAbortedException被抛出。

这是我的代码设置方式:

using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew, TimeSpan.FromHours(1)))
{
    using (RgsDb2.DbConnection pDbConn = mComms.DbConnection(mConnectionString))
    {
        if (FirstFile(mCurrentImportDate, pDbConn))
        {          
            if (SecondFile(mCurrentImportDate, pDbConn))
            {            
                if (ThirdFile(mCurrentImportDate, pDbConn))
                {            
                    if (FourthFile(mCurrentImportDate, pDbConn))
                    {            
                        if (FifthFile(mCurrentImportDate, pDbConn))
                        {
                            //LOOPS THROUGH THE LIST AND CREATES A NEW THREAD FOR THE FILE AND ADDS THAT TO A LIST.
                            foreach (string pFileThread in pThreadArray)
                            {
                                ProcessFilesThread pFileImportThread = new ProcessFilesThread(mConfiguration, pFileThread, mCurrentImportDate, ref pThreadList, ref mImportResults, mConnectionString, mFiles);
                                mActiveThreads.Add(pFileImportThread);
                             }

                             //STARTS EACH THREAD IN THE LIST.
                             mActiveThreads.ForEach(a => a.Start());
                        }
                    }
                }
            }
        }
    }
    scope.Complete();
}

对于前5个文件,他们使用pDbConn,它位于using语句中,但因为22个文件将同时运行,所以22个其他文件中的每个文件都有自己的连接。

有人能看到抛出TransactionAbortedException的原因吗?

0 个答案:

没有答案