public void SetThreadResult(Thread t, IHaveManyGenericTypesClosed result)
 {
     lock (dictLock)
     {
         _threadResults.Add(t, result);
     }
 }
 public void SetThreadResult(Thread t, IHaveManyGenericTypesClosed result)
 {
     lock (dictLock)
     {
         _threadResults.Add(t, result);
     }
 }
        private void ContainerReturnsDifferentInstancesOnDifferentThreads_ThreadProcedure(object o)
        {
            ContainerReturnsDifferentInstancesOnDifferentThreads_ThreadInformation info = o as ContainerReturnsDifferentInstancesOnDifferentThreads_ThreadInformation;

            IHaveManyGenericTypesClosed resolve1 = info.Container.Resolve <IHaveManyGenericTypesClosed>();
            IHaveManyGenericTypesClosed resolve2 = info.Container.Resolve <IHaveManyGenericTypesClosed>();

            Assert.AreSame(resolve1, resolve2);

            info.SetThreadResult(Thread.CurrentThread, resolve1);
        }
        public void ContainerReturnsTheSameInstanceOnTheSameThread()
        {
            IUnityContainer container = new UnityContainer();

            container.RegisterType <IHaveManyGenericTypesClosed, HaveManyGenericTypesClosed>(new PerThreadLifetimeManager());

            IHaveManyGenericTypesClosed a = container.Resolve <IHaveManyGenericTypesClosed>();
            IHaveManyGenericTypesClosed b = container.Resolve <IHaveManyGenericTypesClosed>();

            Assert.AreSame(a, b);
        }