Core objects: Code
1 Public Class Messagequeue < T >
2 {
3 Private Object _ asyno = New Object ();
4 Private Queue < T > _ Queue = New Queue < T > ();
5 Private Manualresetevent _ asynevent = New Manualresetevent ( True );
6
7 Public T dequeue (){
8 T = Default (T );
9 If (_ Queue. Count <= 0 )
10 {
11 _ Asynevent. Reset ();
12 _ Asynevent. waitone ();
13 }
14
15 Lock (_ Asyno)
16 {
17 T = _ Queue. dequeue ();
18 }
19 Return T;
20 }
21
22 Public Void Enqueue (t ){
23 Lock (_ Asyno)
24 {
25 _ Queue. enqueue (t );
26 _ Asynevent. Set ();
27 }
28 }
29 }
Call an instance
Code 1 Class Program
2 {
3 Static Messagequeue < String > Mqstr = New Messagequeue < String > ();
4
5 Static Void Main ( String [] ARGs)
6 {
7 Thread t = New Thread (threadmethod );
8 T. Start ();
9 While ( True ){
10 Console. writeline ( " Enter: " );
11 String Str = Console. Readline ();
12 Mqstr. enqueue (STR );
13 }
14 }
15
16 Static Void Threadmethod (){
17 Int I = 0 ;
18 While ( True ){
19 Console. writeline (mqstr. dequeue () + " : " + I ++ . Tostring ());
20 }
21 }
22 }