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 -~----------~----~----~----~------~----~------~--~---
