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.

Reply via email to