public void SingleTimedInstance() { var s1 = TimedSingleton.Instance(); var s2 = TimedSingleton.Instance(); Assert.That(s1, Is.EqualTo(s2)); }
public static TimedSingleton Instance() { // divide by 5 int index = (int)DateTime.Now.Subtract(_startTime).TotalSeconds / 5; Debug.WriteLine(index); // TimedSingleton result; // if you're going to multhreed this lock (AddedPositions) { // try to get the index seconds ... if (!AddedPositions.TryGetValue(index, out result)) { // not happened Debug.WriteLine("Created new instance"); result = new TimedSingleton(); // store it for later AddedPositions.Add(index, result); } else { // result has now a previous instance Debug.WriteLine("from cache"); } } return(result); }
public void InstanceResets() { var s1 = TimedSingleton.Instance(); Thread.Sleep(6000); var s2 = TimedSingleton.Instance(); Assert.That(s1, Is.Not.EqualTo(s2)); }
static void Main(string[] args) { Resolver resolver = new Resolver(); resolver.Register <IBaseConfig>(() => { return(new BaseConfig()); }, LifeTimeType.SingletonFunc); var f1 = new Func <IBaseHandler> (() => { return(new BaseHandler(resolver.Create <IBaseConfig>())); }); var f = new TimedSingleton(new System.TimeSpan(0, 0, 4)).SingletonFunc <IBaseHandler>(f1); resolver.Register( new TimedSingleton(new System.TimeSpan(0, 0, 4)) .SingletonFunc( new Func <IBaseHandler>( () => { return(new BaseHandler(resolver.Create <IBaseConfig>())); }) )); var handler = resolver.Create <IBaseHandler>(); handler.Handle(); var handler2 = resolver.Create <IBaseHandler>(); handler2.Handle(); System.Threading.Thread.Sleep(5000); var handler3 = resolver.Create <IBaseHandler>(); handler3.Handle(); var handler4 = resolver.Create <IBaseHandler>(); handler4.Handle(); }
public void TimedSingletonNotNull() { var s = TimedSingleton.Instance(); Assert.NotNull(s); }