Make a simple app with a couple buttons on it that has the same
problem and post a zip file of it

On Oct 6, 5:07 pm, justin coon <[email protected]> wrote:
> Is this dead?
>
> ________________________________
> From: webpaul <[email protected]>
> To: nhusers <[email protected]>
> Sent: Friday, October 2, 2009 10:59:00 AM
> Subject: [nhusers] Re: WPF BackgroundWorker and NHibernate
>
> Make a simple throw away winforms app which submits the request in the
> background thread so we can see all the repository/session stuff you
> are doing in one place. My suspicion though is that once you do that
> you will see the issue yourself.
>
> Keep all the repository/nhibernate stuff in the Process method,
> dispose everything before leaving. In WhenFinished you should only be
> dealing with already populated objects, no DB calls should be
> submitted once you are in that part of the code.
>
> On Oct 2, 10:21 am, justin coon <[email protected]> wrote:
>
>
>
> > Great replies, however im not doing any lazy loading at all, just for that 
> > purpose, so that I grab everything at once. There must be something else Im 
> > doing wrong, cause I dont have any Lazy=true attributes set anywhere and 
> > that is by design in order to help me to be able to do exactly what we are 
> > trying to accomplish here...do nHibernate stuff on a background 
> > thread....any more thoughts? =\
>
> > ________________________________
> > From: webpaul <[email protected]>
> > To: nhusers <[email protected]>
> > Sent: Friday, October 2, 2009 9:38:08 AM
> > Subject: [nhusers] Re: WPF BackgroundWorker and NHibernate
>
> > Actually, after looking at your original post, I think the issue may
> > be that you have a lazy initialized object or collection and you are
> > accessing it after you have disposed the session or connection
> > somehow. You may want to look into not using lazy init, getting back
> > all the data you need to display at once in the background thread, and
> > then displaying it on the main thread.
>
> > I reread some of your responses and it looks like you are trying to
> > take advantage of lazy loading, but I don't know what advantage there
> > is to be had in this scenario. If you continue to use lazy loading
> > you're going to have DB requests going out on the main thread as
> > things are accessed. For the most part I try to keep all that on the
> > background thread so it doesn't tie up the UI which means not using
> > lazy loading in this scenario.
>
> > On Oct 2, 9:32 am, webpaul <[email protected]> wrote:
>
> > > In the .process you do the work, i.e. using(var repository = new
> > > WhateverRepository()) { return repository.GetAll(); }
>
> > > In the WhenFinished, you take that IList and bind it or do whatever
> > > you need to with it. Same story with updates, except I tend to just
> > > return the count of things updated and display that to the user
> > > instead of the list of businessobjects.
>
> > > I don't share sessions among repositories unless they need to
> > > participate in the same transaction so I don't run into the problem of
> > > needing to worry about multiple threads accessing the same session
> > > using this method. After reading the other separate post made today I
> > > think this is pretty similar to the option he is suggesting with the
> > > asyncmethod attribute.
>
> > > On Oct 1, 4:35 pm, justin coon <[email protected]> wrote:
>
> > > > webpaul,
>
> > > > Refreshing an activerecord business object with the code i grabbed from 
> > > > your post results in this exception.
> > > > "There is already an open DataReader associated with this Command which 
> > > > must be closed first"
> > > > All im doing is calling a method thats calls .Refresh() on my business 
> > > > object in the .Process() => and then it returns an int (since it doesnt 
> > > > support methods with void return type."
>
> > > > using
> > > > {
> > > > executer
> > > > .Process(() =>
> > > > {})
>
> > > > .WhenFinished(businessObject =>
> > > > {
> > > > BuildInvoiceViewModels();
>
> > > > })
> > > > .Run();
> > > > }
> > > > }
> > > > }
> > > > {
> > > > }intGetData()this.EndUser.Refresh();return1;(ThreadedExecuter<int> 
> > > > executer = newThreadedExecuter<int>(this))returnGetData();
>
> > > > Any thoughts?
>
> > > > ________________________________
> > > > From: justin coon <[email protected]>
> > > > To: [email protected]
> > > > Sent: Thursday, October 1, 2009 4:12:06 PM
> > > > Subject: [nhusers] Re: WPF BackgroundWorker and NHibernate
>
> > > > webpaul,
>
> > > > thanks so much for your input...however i dont see you using nHibernate 
> > > > in your example..this is the kicker to the problem. Nhibernate sessions 
> > > > are associated with a thread and thats whats causing the problems for 
> > > > me....do you know about nHibernate and doing things on another thread?
> > > > Appreciate your help and input very much!!
>
> > > > Justin
>
> > > > ________________________________
> > > > From: webpaul <[email protected]>
> > > > To: nhusers <[email protected]>
> > > > Sent: Thursday, October 1, 2009 3:58:27 PM
> > > > Subject: [nhusers] Re: WPF BackgroundWorker and NHibernate
>
> > > > I use this on all my winform projects for putting requests on the
> > > > background thread (including nhibernate ones) and then getting the
> > > > results when it is done, without having to mess with invokerequired or
> > > > anything.
>
> > > >http://www.codeproject.com/KB/threads/ThreadedExecuter.aspx
>
> > > > On Oct 1, 10:02 am, José F. Romaniello <[email protected]> wrote:
>
> > > > > I've been very busy this weeks, I will write about it, be patient 
> > > > > please.
>
> > > > > 2009/9/30 justin coon <[email protected]>
>
> > > > > > I would LOVE LOVE LOVE to see someone demonstrate how to do
> > > > > > multithreading with nHibernate on a desktop app(in particular a WPF
> > > > > > app)
>
> > > > > > Ive been at 2 employers, both which would like to figure out if this
> > > > > > is possible, and if so, how to implement it. Right now i would be
> > > > > > happy with being able to do things in a background worker like the 
> > > > > > OP,
> > > > > > but i ran in to the exact same issues. Any chance Jose of you 
> > > > > > posting
> > > > > > some code? I would be so en debted.
>
> > > > > > Thanks
> > > > > > Justin- Hide quoted text -
>
> > > > > - Show quoted text -- Hide quoted text -
>
> > > > - Show quoted text -- Hide quoted text -
>
> > > - Show quoted text -- Hide quoted text -
>
> > - Show quoted text -- Hide quoted text -
>
> - Show quoted text -
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"nhusers" 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/nhusers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to