Hi Chandru, you may already be using it, but there is a class in CC.Utilities called BackgroundTask (which wraps the .NET framework BackgroundWorker) that you can use within your application component. The good thing about this class is that the progress events are automatically marshaled back to (and executed on) the UI thread so that you don't have to do that yourself. To answer your question, though ... If you can, it would be better to run your thread from within the application component, rather than exposing your component so that other classes can manipulate it. As a general rule, the more you can decouple classes from each other (and encapsulate their internal state), the better the design will be, and it will also be easier to maintain your code. If the thread can't be part of your component (usually because other classes also depend on it or need updates from it), then it should be treated as a service. In your case, the service would expose an event that your component subscribes to in order to receive updates. Often, people think of 'services' as being out of process, but they also exist in our code as singleton classes, often with a suffix like 'Manager'. I think you asked in a previous post about the Import Progress component and the LocalDataStoreActivityMonitor service. This is a good example of an application component subscribing to a service for updates. Hope this helps, Stewart |