public void T05() { RateManager rm = new RateManager(); rm.InterestRate = 5; int newRate = 7; //replaces this in T03 ThreadPool.QueueUserWorkItem((e) => { rm.SetRate(r2); }); Task<int> task = Task.Factory.StartNew<int>(() => { return rm.GetNewRate(newRate); }); //This blocks (waits) until finished so you don't have to write a sleep Console.WriteLine("task.Result: " + task.Result + " ThreadID:" + Thread.CurrentThread.ManagedThreadId); Console.WriteLine("Interest Rate is: " + rm.InterestRate + " ThreadID:" + Thread.CurrentThread.ManagedThreadId); }
public void T04() { ShowThread("Main()"); RateManager rm = new RateManager(); rm.InterestRate = 5; int newRate = 7; //replaces this in T03 ThreadPool.QueueUserWorkItem((e) => { rm.SetRate(r2); }); Task.Factory.StartNew(() => { rm.SetRate(newRate); }); Thread.Sleep(300); //give the bg thread time to set the new rate Console.WriteLine("Interest Rate is: " + rm.InterestRate + " ThreadID:" + Thread.CurrentThread.ManagedThreadId); }
public void T03() { ShowThread("Main()"); RateManager rm = new RateManager(); rm.InterestRate = 5; int r2 = 7; ThreadPool.QueueUserWorkItem((e) => { ShowThread("Threadpool "); rm.SetRate(r2); }); Thread.Sleep(300); //give the bg thread time to set the new rate Console.WriteLine("Interest Rate is: " + rm.InterestRate + " ThreadID:" + Thread.CurrentThread.ManagedThreadId); }
public void T02() { ShowThread("Main()"); RateManager rm = new RateManager(); rm.InterestRate = 5; BackgroundWorker bgw = new BackgroundWorker(); bgw.DoWork += (s, e) => { ShowThread("BGWorker"); rm.InterestRate = 2; }; bgw.RunWorkerCompleted += (s, e) => { ShowThread("RunWorkerCompleted"); }; bgw.RunWorkerAsync(); Thread.Sleep(300); //give the bg thread time to set the new rate Console.WriteLine("Interest Rate is: " + rm.InterestRate + " ThreadID:" + Thread.CurrentThread.ManagedThreadId); }
public void T01_A(RateManager a) { a.InterestRate = 5; }
public void T01() { ShowThread("Main()"); RateManager rm = new RateManager(); rm.InterestRate = 1; Thread t = new Thread(() => T01_A(rm)); t.Start(); t.Join(); Console.WriteLine("Interest Rate is: " + rm.InterestRate + " ThreadID:" + Thread.CurrentThread.ManagedThreadId); }