diff --git a/src/Castle.Windsor.Tests/Registration/DynamicParametersTestCase.cs b/src/Castle.Windsor.Tests/Registration/DynamicParametersTestCase.cs index a1749cd816..c33a5543c0 100644 --- a/src/Castle.Windsor.Tests/Registration/DynamicParametersTestCase.cs +++ b/src/Castle.Windsor.Tests/Registration/DynamicParametersTestCase.cs @@ -245,7 +245,7 @@ public void Properly_releases_tracked_dendendencies_im_multithreaded_scenarios() } foreach (var thread in threads) { - Assert.True(thread.Join(TimeSpan.FromSeconds(30))); + Assert.True(thread.Join((int)TimeSpan.FromSeconds(30).TotalMilliseconds)); } Assert.AreEqual(0, count); diff --git a/src/Castle.Windsor/Facilities/TypedFactory/Internal/TypedFactoryInterceptor.cs b/src/Castle.Windsor/Facilities/TypedFactory/Internal/TypedFactoryInterceptor.cs index 9f15ccb50a..b4d5b1e039 100644 --- a/src/Castle.Windsor/Facilities/TypedFactory/Internal/TypedFactoryInterceptor.cs +++ b/src/Castle.Windsor/Facilities/TypedFactory/Internal/TypedFactoryInterceptor.cs @@ -134,7 +134,11 @@ private void CollectDeadReferences() } resolveCount = 0; +#if SL3 + var instances = new List(); +#else var instances = new HashSet(new ReferenceEqualityComparer()); +#endif var newList = new List(); foreach (var reference in resolvedTrackedComponents) { @@ -147,10 +151,18 @@ private void CollectDeadReferences() { continue; } +#if SL3 + if(instances.Any(existing=> ReferenceEquals(existing,instances)) == false) + { + instances.Add(instance); + newList.Add(reference); + } +#else if (instances.Add(instance)) { newList.Add(reference); } +#endif } resolvedTrackedComponents.Clear(); resolvedTrackedComponents.AddRange(newList);