private void Recoursion(object obj)
        {
            var state = (int)obj;

            _workLoad.DoWork();

            Console.WriteLine($"Thread:{Thread.CurrentThread.ManagedThreadId} - state:{state}");

            state--;

            if (state <= 0)
            {
                return;
            }

            var semaphoreSlim = new SemaphoreSlim(0, 1);

            ThreadPool.QueueUserWorkItem((t) =>
            {
                Recoursion(t);
                semaphoreSlim.Release();
            }, state);

            semaphoreSlim.Wait();
        }
Ejemplo n.º 2
0
        private void Recursion(object obj)
        {
            var state = (int)obj;

            if (state <= 0)
            {
                return;
            }

            _workLoad.DoWork();

            Console.WriteLine($"Thread:{Thread.CurrentThread.ManagedThreadId} - state:{state}");

            state--;

            var thread = new Thread(Recursion);

            thread.Start(state);
            thread.Join();
        }
Ejemplo n.º 3
0
        private void Recoursion(object obj)
        {
            var state = (int)obj;

            if (state <= 0)
            {
                return;
            }

            _workLoad.DoWork();

            Console.WriteLine($"Thread:{Thread.CurrentThread.ManagedThreadId} - state:{state}");

            state--;

            SleepRandomTime();

            ThreadPool.QueueUserWorkItem(new WaitCallback(t => { Recoursion(state); }));

            sem.Wait();
        }