我正在创建一个基本上每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的原因吗?