//
// Copyright (c) 2002
// Ronald Kevin Burton
//
// Z poniższym kodem nie jest związana żadna gwarancja poprawności działania.
// Program został dołączony do książki ".NET CLR. Księga eksperta" w celu
// ilustracji koncepcji i zasad przedstawionych w tej książce. Program może być 
// używany na własne ryzyko.
//
// Przyznaje się prawo do użycia lub kopiowania tego oprogramowania do dowolnego celu
// bez konieczności ponoszenia żadnych opłat pod warunkiem, że powyższe uwagi zostaną 
// zachowane we wszystkich kopiach. Przyznaje się także prawo do modyfikacji kodu
// i dystrybucji zmodyfikowanego kodu pod warunkiem zachowania powyższych uwag
// oraz dołączenia informacji mówiącej o modyfikacji kodu.
//
// 
using System;
using System.Threading;

namespace ThreadHelloWorld
{
	/// <summary>
	/// Podsumowanie dla Class1.
	/// </summary>
	class MulticastThread
	{
		static ManualResetEvent stopEvent;
		static void ThreadEntry1()
		{
			Thread currentThread = Thread.CurrentThread;
			Console.WriteLine("Witaj świecie z ThreadEntry1 {0} {1}!",
				              currentThread.GetHashCode(),
				              Environment.TickCount);
			stopEvent.WaitOne();
		}
		static void ThreadEntry2()
		{
			Thread currentThread = Thread.CurrentThread;
			Console.WriteLine("Witaj świecie z ThreadEntry2 {0} {1}!",
				               currentThread.GetHashCode(),
				               Environment.TickCount);
		}
		static void Main(string[] args)
		{
			stopEvent = new ManualResetEvent(false);
			ThreadStart tsd = new ThreadStart(ThreadEntry1);
			tsd += new ThreadStart(ThreadEntry2);
			Thread t = new Thread(tsd);
			t.Start();
			Thread.Sleep(1000);
			stopEvent.Set();
			t.Join();
		}
	}
}
