I would like to receive the following message between two threads:
Thread Alpha does something and then pauses. Then a second stream (beta) and an event that resumes the Alpha stream are added. The cycle continues ...
I did something like below, but I'm not sure if this is the right design. I also noticed that Thread.Suspend() and Thread.Resume() are deprecated. I look forward to hearing any recommendations regarding this implementation, and it is preferable to replace obsolete methods.
namespace ThreadTester { delegate void ActionHandler(); class Alpha { internal Thread alphaThread; internal void Start() { while (true) { this.alphaThread.Suspend(); Console.WriteLine("Alpha"); } } internal void Resume() { while (this.alphaThread.ThreadState == ThreadState.Suspended) this.alphaThread.Resume(); } } class Beta { internal event ActionHandler OnEvent; internal void Start() { for (int i = 0; i < 15; i++) { OnEvent(); Thread.Sleep(1000); } } } class Program { static void Main(string[] args) { Alpha alpha = new Alpha(); alpha.alphaThread = new Thread(new ThreadStart(alpha.Start)); alpha.alphaThread.Start(); while (!alpha.alphaThread.IsAlive) ; Beta beta = new Beta(); beta.OnEvent += new ActionHandler(alpha.Resume); Thread betaThread = new Thread(new ThreadStart(beta.Start)); betaThread.Start(); } } }
multithreading c # events
nan
source share