Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 3978276
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 20, 20262026-05-20T05:01:39+00:00 2026-05-20T05:01:39+00:00

I am using MEF in a framework to compose worker threads available processors dynamically

  • 0

I am using MEF in a framework to compose worker threads “available processors” dynamically at runtime.

There is a queue of items to process, and a large number of worker threads (16) get instantiated. There is a ommon CompositionContainer that is used by the class managing the queue, then every worker creates it’s own container:

       using (CompositionContainer container = new CompositionContainer(CompositionContainer)) {
            container.ComposeExportedValue<CompositionContainer> (container);
            using (Processor.ProcessorSession session = container.GetExport<Processor.ProcessorSession>().Value) {
                Data data;
                while (_DataQueue.Dequeue(out data)) {
                    session.ProcessData(data);
                }
            }
        }

My problem is that in the Processor.ProcessorSession a DataManager is instantiated by MEF as a shared object – which is OK, I want it to be unique within the “work context”. Sadly, this results in ONE DataManager existing, not one per sub-container. This, incidentally, results in ….. a lot of chao (a.k.a. bugging out).

Where is the error? Do the sub-containers just delegate up to the parent automatically? How do I stop this?

There is only one catalog defined at the top, and for this particular scenario I would really like to avoid dealing with custom catalogs at this level.

Suggested readings? Suggested solutions?

Wanted behavior:
* There is no DataManager instntiated in the base composition container.
* I want it to be shared within the sub-containe (the one created in the example code)
* BUT: every worker thread has it’s own subcontainer and as such the shared “context” should be the sub-container, not the parent one (i.e. one DataManager created per thread, within the ProcessorSession).

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-20T05:01:40+00:00Added an answer on May 20, 2026 at 5:01 am

    You need to identify which parts should be shared per work-context, and which ones should be shared globally. You should put them in separate catalogs, and the parent container should use the catalog of parts which should be shared globally, while the child container should use the the catalog with parts that should be unique within the work-context.

    If there are no parts which need to be shared globally, then you don’t need a parent-child container relationship at all. Just create a separate CompositionContainer for each worker. I’d recommend creating the catalog only once, as this will help with performance.

    If you do need to split your parts into two different catalogs, the FilteredCatalog in the latest MEF preview may help you. Also, right now we are working on some more functionality along these lines (so that hopefully you wouldn’t have to manage splitting the catalog yourself). When we release a new preview with that functionality we’ll be looking for feedback, so watch the MEF codeplex site, as well as some of the blogs for the MEF team members:

    • My Blog
    • Hammett’s blog
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Using MEF I want to do the following. I have a WPF Shell. To
Using ASP.NET MVC there are situations (such as form submission) that may require a
Using C# and System.Data.SqlClient, is there a way to retrieve a list of parameters
Using online interfaces to a version control system is a nice way to have
Using PyObjC , you can use Python to write Cocoa applications for OS X.
Using C# .NET 3.5 and WCF, I'm trying to write out some of the
Using TortoiseSVN against VisualSVN I delete a source file that I should not have
Using VS2008, C#, .Net 2 and Winforms how can I make a regular Button
Using JDeveloper , I started developing a set of web pages for a project
Using C#, I need a class called User that has a username, password, active

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.