public class Udostepniajaca
{
public delegate void MojDelegat();
public event MojDelegat MojEvent;
public bool running = false;
public void Start()
{
running = true;
new Thread(new ThreadStart(ZrobCos)).Start();
}
public void Stop() { running = false; }
public void ZrobCos()
{
while (running)
{
System.Threading.Thread.Sleep(300);
MojEvent();
}
}
}
public class Wykorzystujaca
{
public void Start()
{
Udostepniajaca obiekt = new Udostepniajaca();
obiekt.MojEvent += new Udostepniajaca.MojDelegat(obiekt_MojEvent);
obiekt.Start();
}
void obiekt_MojEvent()
{
Console.WriteLine("Event, teraz: " + DateTime.Now.ToLongTimeString());
}
}
public class Program
{
static void Main(string[] args)
{
Wykorzystujaca wykorzystujaca = new Wykorzystujaca();
wykorzystujaca.Start();
wykorzystujaca = null;
GC.Collect();
Console.ReadLine();
}
}
Działa bez przerwy. Dlaczego? Tzn jak długo jeszcze "podziała"? Ogólnie chciałbym się dowiedzieć, czy nie potrzebuję żadnej pętli czekającej (w klasie Wykorzystujaca) na eventy wywoływane z innej klasy (Udostepniajacej), bo nie wiem czy mi w końcu GarbageCollector nie usunie "czekającego", co troche rozkraczy aplikację.
Pozdrawiam i dzięki z góry za odpowiedź.