Je voudrais réaliser une communication suivante entre deux fils :
Le fil Alpha fait quelque chose, puis se suspend. Ensuite, le deuxième fil (Beta) lève un événement qui reprend le fil Alpha. Le cycle continue...
J'ai fait quelque chose comme ci-dessous mais je ne suis pas sûr que ce soit une conception correcte. J'ai également remarqué que Thread.Suspend()
y Thread.Resume()
sont dépréciés. Je suis impatient d'entendre tout avis sur cette mise en œuvre et sur ce qui est préférable pour remplacer les méthodes dépréciées.
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();
}
}
}