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

  • Home
  • SEARCH
  • 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

Is there a way using IoC, MEF [Imports], or another DI solution to compose
I am learning plug able architecture in .Net using Managed Extensibility Framework (MEF.) I
I am using MEF to compose a number of components at run time but
I am trying to dynamically (using reflection) add types to a MEF catalog and
We are planning on developing a framework using MEF as the base an pulling
I'm coding an extension in C# using the Managed Extensibility Framework (MEF). How can
we are currently using MEF (Managed Extensibility Framework, http://mef.codeplex.com/ ) and it throws out
Background: I'm using MEF to help compose an Excel 2007 Add-In (VSTO) that can
Using MEF I want to do the following. I have a WPF Shell. To
I'm using MEF for a plugin-system to my application. The flow goes like this:

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.