本文整理汇总了C#中ObjectPool.UpdateFactory方法的典型用法代码示例。如果您正苦于以下问题:C# ObjectPool.UpdateFactory方法的具体用法?C# ObjectPool.UpdateFactory怎么用?C# ObjectPool.UpdateFactory使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ObjectPool
的用法示例。
在下文中一共展示了ObjectPool.UpdateFactory方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ObjectPoolTestFactory
public void ObjectPoolTestFactory()
{
var factory1 = new Disposable();
var factory2 = new Disposable();
var objectPool = new ObjectPool<Disposable, Disposable>();
objectPool.UpdateFactory(ObjectFactory.Create(factory1, d => d.Create()));
var p3 = objectPool.GetOrCreate();
p3.Dispose();
objectPool.UpdateFactory(ObjectFactory.Create(factory2, d => d.Create()));
Assert.IsTrue(factory1.Disposed);
var p1 = objectPool.GetOrCreate();
var p2 = objectPool.GetOrCreate();
p1.Dispose();
p2.Dispose();
p1 = objectPool.GetOrCreate();
p1.Dispose();
objectPool.Dispose();
factory1.AssertChildrenDisposed();
Assert.AreEqual(1, factory1.Children.Count);
factory2.AssertChildrenDisposed();
Assert.AreEqual(2, factory2.Children.Count);
Assert.IsTrue(factory2.Disposed);
}
示例2: ObjectPoolTestConcurrency
public void ObjectPoolTestConcurrency()
{
var factories = new List<Disposable> { new Disposable() };
var objectPool = new ObjectPool<Disposable, Disposable>(ObjectFactory.Create(factories[0], d => d.Create()));
var t1 = new Thread(() =>
{
for (int i = 0; i < 500; i++)
{
var p = objectPool.GetOrCreate();
Thread.Sleep(5);
p.Dispose();
}
});
var t2 = new Thread(() =>
{
for (int i = 0; i < 500; i++)
{
var p = objectPool.GetOrCreate();
Thread.Sleep(7);
p.Dispose();
}
});
var t3 = new Thread(() =>
{
for (int i = 0; i < 20; i++)
{
var f = new Disposable();
objectPool.UpdateFactory(ObjectFactory.Create(f, d => d.Create()));
Thread.Sleep(20);
}
});
t1.Start();
t2.Start();
t3.Start();
t1.Join();
t2.Join();
t3.Join();
objectPool.Dispose();
foreach (var f in factories)
{
Assert.IsTrue(f.Disposed);
f.AssertChildrenDisposed();
}
}
示例3: ObjectPoolTestDisposed2
public void ObjectPoolTestDisposed2()
{
var objectPool = new ObjectPool<Disposable, Disposable>(ObjectFactory.Create(new Disposable(), d => d.Create()));
objectPool.Dispose();
objectPool.UpdateFactory(ObjectFactory.Create(new Disposable(), d => d.Create()));
}