C# 已修改NHibernate异常枚举数

C# 已修改NHibernate异常枚举数,c#,nhibernate,C#,Nhibernate,我有一个带有ThreadStaticSessionContext的多线程NHibernate应用程序。 我为每个线程绑定一个新会话。在退出线程之前,我提交事务并获得 enumerator was modified at NHibernate.Util.SequencedHashMap.OrderedEnumerator.MoveNext() at NHibernate.Util.IdentityMap.get_EntryList() at NHibernate.Util.I

我有一个带有ThreadStaticSessionContext的多线程NHibernate应用程序。 我为每个线程绑定一个新会话。在退出线程之前,我提交事务并获得

enumerator was modified

  at NHibernate.Util.SequencedHashMap.OrderedEnumerator.MoveNext()  
  at NHibernate.Util.IdentityMap.get_EntryList()  
  at NHibernate.Util.IdentityMap.ConcurrentEntries(IDictionary map)  
  at NHibernate.Event.Default.AbstractFlushingEventListener.PrepareEntityFlushes(IEventSource session)  
  at NHibernate.Event.Default.AbstractFlushingEventListener.FlushEverythingToExecutions(FlushEvent event)  
  at NHibernate.Event.Default.DefaultFlushEventListener.OnFlush(FlushEvent event)  
  at NHibernate.Impl.SessionImpl.Flush()  
  at NHibernate.Transaction.AdoTransaction.Commit()  
  at ...

我没有任何线索…

在枚举集合时从集合中添加/删除时通常会引发此异常(如在
foreach
语句中)。

代码在try{Transaction.Commit();Session.Close();return true;}catch中失败(异常ex){//log ex Console.WriteLine(ex);Console.ReadKey();if(Transaction!=null)Transaction.Rollback();if(Session!=null)Session.Clear();return false;}在Transaction.Commit()中,在
Commit期间,集合似乎正在被另一个线程修改