public void test() { var container = new Container(x => { x.For<IGrandParent>().Use<GrandParent>(); x.For<IParent>().Use<Parent>(); x.For<IChild>().Use<Child>(); x.For<IGrandChild>().Use<GrandChild>(); }); var tasks = new[] { new Task(() => container.Get<IGrandParent>(), TaskCreationOptions.LongRunning), new Task(() => container.Get<IGrandParent>(), TaskCreationOptions.LongRunning) }; tasks.ForEach(x => x.Start()); Task.WaitAll(tasks); }