Example #1
0
        public void SingleTimedInstance()
        {
            var s1 = TimedSingleton.Instance();
            var s2 = TimedSingleton.Instance();

            Assert.That(s1, Is.EqualTo(s2));
        }
Example #2
0
    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);
    }
Example #3
0
        public void InstanceResets()
        {
            var s1 = TimedSingleton.Instance();

            Thread.Sleep(6000);
            var s2 = TimedSingleton.Instance();

            Assert.That(s1, Is.Not.EqualTo(s2));
        }
Example #4
0
        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();
        }
Example #5
0
        public void TimedSingletonNotNull()
        {
            var s = TimedSingleton.Instance();

            Assert.NotNull(s);
        }