http://using.castleproject.org/display/AR/Using+the+Conversation+Pattern
for IConversation. http://stw.castleproject.org/Active%20Record.Using%20Scopes.ashx http://stw.castleproject.org/Active%20Record.Understanding%20Scopes.ashx for scopes. -Markus 2010/8/12 Mike Christensen <[email protected]>: > I'll look into the conversations idea.. I'm kinda an > NHibernate/Castle newbie, can you point me to some documentation or > example code on how to do this? I'd greatly appreciate it. Thanks!! > > Mike > > On Thu, Aug 12, 2010 at 4:53 AM, Markus Zywitza > <[email protected]> wrote: >> I guess you have a web app. The problem is that the >> SessionFactoryHolder stores the created session in the HttpContext, >> which the thread doesn't have access to. You can try (without any >> warranty) HybridThreadScopeInfo instead of WebThreadScopeInfo. >> The better idea is to use conversations: >> Create a runner class that keeps a ScopedConversation and calls the >> methods in a ConversationalScope or by using the IConversations >> Execute() method. This way you have each thread running with its own >> independent session. >> >> -Markus >> >> 2010/8/12 Mike Christensen <[email protected]>: >>> Hi guys - >>> >>> I have three very hefty functions that load data from the DB, but can >>> run independently of each other. I run them like this: >>> >>> LoadRecipeGraph(); >>> LoadIngredientGraph(); >>> LoadRatingGraph(); >>> >>> This works great, no errors. Since they all take several seconds >>> each, I'd like to run them in parallel. So I'm trying this: >>> >>> Thread recipeLoader = new Thread(LoadRecipeGraph); >>> Thread ingLoader = new Thread(LoadIngredientGraph); >>> Thread ratingLoader = new Thread(LoadRatingGraph); >>> >>> recipeLoader.Start(); >>> ingLoader.Start(); >>> ratingLoader.Start(); >>> >>> recipeLoader.Join(); >>> ingLoader.Join(); >>> ratingLoader.Join(); >>> >>> The first one starts, with no errors. However, when I call Start on >>> the second one, I immediately get: >>> >>> "WebThreadScopeInfo: Could not access HttpContext.Current" >>> on the line: >>> >>> ISession session = holder.CreateSession(typeof(DB.User)); >>> >>> Each function is pretty much the same, it loads data from a view like this: >>> >>> ISessionFactoryHolder holder = >>> ActiveRecordMediator.GetSessionFactoryHolder(); >>> ISession session = holder.CreateSession(typeof(DB.User)); <-- Crash here >>> IDbCommand cmd = session.Connection.CreateCommand(); >>> cmd.CommandType = CommandType.TableDirect; >>> cmd.CommandText = "SomeDBView"; >>> IDataReader reader = cmd.ExecuteReader(); >>> >>> while (reader.Read()) >>> { >>> //Do a bunch of junk >>> } >>> >>> What am I doing wrong? Thanks!! >>> >>> Mike >>> >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "Castle Project Users" group. >>> To post to this group, send email to [email protected]. >>> To unsubscribe from this group, send email to >>> [email protected]. >>> For more options, visit this group at >>> http://groups.google.com/group/castle-project-users?hl=en. >>> >>> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Castle Project Users" group. >> To post to this group, send email to [email protected]. >> To unsubscribe from this group, send email to >> [email protected]. >> For more options, visit this group at >> http://groups.google.com/group/castle-project-users?hl=en. >> >> > > -- > You received this message because you are subscribed to the Google Groups > "Castle Project Users" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/castle-project-users?hl=en. > > -- You received this message because you are subscribed to the Google Groups "Castle Project Users" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/castle-project-users?hl=en.
