예제 #1
0
        static void SimulateServiceFailure(Object source, ElapsedEventArgs e)
        {
            ServiceSession serviceSession = ServiceSession.Instance;


            lock (serviceSession.data._workLock)
            {
                Console.WriteLine();
                Console.WriteLine();
                Console.WriteLine();
                Console.WriteLine();
                Console.WriteLine();

                Console.WriteLine("******* Service Went down please wait 20 seconds... **********");
                Console.WriteLine();
                Thread.Sleep(20000);

                serviceSession.SetNumberOfThreads(maxThreads += 2);
                Console.WriteLine($"******* SetNumberOfThreads to |{maxThreads}|... **********");

                Console.WriteLine("******* Service is up and Running... **********");
                Console.WriteLine();
                Console.WriteLine();
                Console.WriteLine();
                Console.WriteLine();
                Console.WriteLine();
            }
        }
예제 #2
0
        static void SimulateThreadJob(object i)
        {
            ServiceSession serviceSession = ServiceSession.Instance;


            lock (serviceSession.data._workLock) {
                //Console.WriteLine(i + " wants to enter");
                serviceSession.data.Semaphore.Wait();
                Console.WriteLine($"Currently Runing Thread:[{i}]");
                //Console.WriteLine("Notify Publisher about failed Service...");
                serviceSession.Notify(!serviceSession.data.serviceAvailable);
                Thread.Sleep(100);
                //Console.WriteLine(i + " is leaving");       // a time.
                Console.WriteLine($"SimulateThreadJob - Semaphore Number Of Threads{serviceSession.data.Semaphore.CurrentCount},maxThreads={maxThreads} ");

                if (serviceSession.data.Semaphore.CurrentCount != maxThreads)
                {
                    serviceSession.data.Semaphore.Release();
                }
            }
        }