воскресенье, 1 февраля 2009 г.

Cинглтон и многопоточность

Допустим у нас есть некий синглтон, который сохраняет свои состояния и работает как конечный автомат. И состояний этих у него много. Но допустим нам хотелось бы воспроизвести результаты его поведения в начальном состоянии. А как его в это состояние вернуть непонятно.
В этом случае иногда может выручить многопоточность.

public delegate string GetXmlFromTestedDelegate(Person[] persons);
private string GetXmlFromTested(Params[] params)
{
Singletone.Instance.Import(params);
return Singletone.GetAllInXml();
}

public void GetResultInXml()
{
GetXmlFromTestedDelegate asyncDelegate = GetXmlFromTested;
IAsyncResult result = asyncDelegate.BeginInvoke(Params, null, null);
while (!result.IsCompleted)
{
Thread.Sleep(50);
}
string xml = asyncDelegate.EndInvoke(result);

Assert.That(xml,Is.EqualTo(GetEtalonXML()));
}


А может и не выручить... Это я к чему собственно?? А к тому, что не всякая реализация синглтона действительно синглтон.

Комментариев нет :

Отправить комментарий