Using System;
Using System.Collections.Generic;
Using System.Linq;
Using System.Text;
Using System.Threading;
Namespace Consoletest
{
public class Classthread
{
Monitoring thread Events
Private ManualResetEvent myresetevent = new ManualResetEvent (false);
Private ManualResetEvent MyResetEvent2 = new ManualResetEvent (false);
public bool Set ()
{
Myresetevent.set ();
return true;
}
public bool Set2 ()
{
Myresetevent2.set ();
return true;
}
private void Threadone (object stateInfo)
{
for (int i = 0; i <; i++)
{
Console.WriteLine ("123");
}
Set ();
Myresetevent2.waitone ();
Console.WriteLine ("123!!!!!!!!!");
}
private void Threadtwo (object stateInfo)
{
Myresetevent.waitone ();
Console.WriteLine ("456");
func<bool> func = new func<bool> (methodtwo);
Func. Invoke ();
Console.WriteLine ("901");
Console.WriteLine ("901");
Console.WriteLine ("901");
}
private bool Methodtwo ()
{
Console.WriteLine ("0000000000000000000000000000000000000000000000");
return Set2 ();
}
public void Run ()
{
Thread _threadasyncrunner = new Thread (new ThreadStart (Threadproc_asyncrunner));
_threadasyncrunner.start ();
}
private void Threadproc_asyncrunner ()
{
ThreadPool.QueueUserWorkItem (New WaitCallback (this. Threadone));
ThreadPool.QueueUserWorkItem (New WaitCallback (this. Threadtwo));
}
}
}
Test
Using System;
Using System.Collections.Generic;
Using System.Linq;
Using System.Text;
Using System.Threading;
Namespace Consoletest
{
Class Program
{
static void Main (string[] args)
{
Console.setbuffersize (100,1200);
Classthread threads = new Classthread ();
Threads.run ();
Console.WriteLine ("11111");
Console.readkey ();
}
}
}
Thread pool management thread and inter-thread communication