Exemple #1
0
        public void ActionShouldRunInDiferrentSingleThread()
        {
            int id1 = 0, id2 = 0, idCurrent = Thread.CurrentThread.ManagedThreadId;

            IServiceProvider serviceProvider = base.InitDependencyInjection(services => { }, builder => { });

            IBackgroundService backgroundService = serviceProvider.GetService <IBackgroundService>();

            backgroundService.Invoke(() =>
            {
                Thread.Sleep(1000);
                id1 = Thread.CurrentThread.ManagedThreadId;
            });
            backgroundService.Invoke(() =>
            {
                Thread.Sleep(1000);
                id2 = Thread.CurrentThread.ManagedThreadId;
            });

            Assert.AreEqual(id1, 0); //action should execute later
            Assert.AreEqual(id2, 0);

            Thread.Sleep(2500);

            Assert.AreNotEqual(id1, idCurrent);
            Assert.AreNotEqual(id2, idCurrent);
            Assert.AreEqual(id1, id2);
        }
Exemple #2
0
        public void InvokeShouldWork()
        {
            IServiceProvider serviceProvider = base.InitDependencyInjection(services => { }, builder => { });

            IBackgroundService backgroundService = serviceProvider.GetService <IBackgroundService>();
            int x = 0, y = 50;

            backgroundService.Invoke(() =>
            {
                x = y;
            });
            System.Threading.Thread.Sleep(1000);

            Assert.AreEqual(x, y);
        }
Exemple #3
0
        public void InvokeManyTimeShouldWork()
        {
            IServiceProvider serviceProvider = base.InitDependencyInjection(services => { }, builder => { });

            IBackgroundService backgroundService = serviceProvider.GetService <IBackgroundService>();
            int x = 0;

            for (var i = 0; i < 100; i++)
            {
                backgroundService.Invoke(() =>
                {
                    x++;
                });
            }
            System.Threading.Thread.Sleep(1000);

            Assert.AreEqual(x, 100);
        }