[C#] Problem z wątkami i "widocznością"(?)
Witam
Jako, że pracuje z C# od niedawna(albo nie umiem znaleźć rozwiązania na google ;)) to mam pewien problem związany z watkami. Staram się zrobić małą symulację lotniska i (przykładowo) mam dwa pasy startowe które są wątkami:
[code]
public class Airstrips
{
public SortedList FlyingAirplane = new SortedList();
public Plane airplane1, airplane2, airplane3;
public void CreateAirPlanes()
{
airplane1 = new Plane("IC_001", 100, 0);
airplane2 = new Plane("IC_002", 200, 0);
airplane3 = new Plane("IC_003", 300, 0);
FlyingAirplane.Add(100, "IC_001");
FlyingAirplane.Add(200, "IC_002");
FlyingAirplane.Add(300, "IC_003");
}
}
public class Airstrip: Airstrips
{
private static Mutex mut = new Mutex();
public int airstrip_status;
public void PlaneOnAirstrip()
{
if (FlyingAirplane.IndexOfValue(airplane1.GetPlaneID()) == 0)
airplane1.Land();
else if (FlyingAirplane.IndexOfValue(airplane2.GetPlaneID()) == 0)
airplane2.Land();
else
airplane3.Land();
FlyingAirplane.RemoveAt(0);
}
public void WaitForPlane()
{
while (int.Parse(FlyingAirplane.Count.ToString()) > 0 )
{
if (airstrip_status == 0)
{
mut.WaitOne();
PlaneOnAirstrip();
airstrip_status = 1;
mut.ReleaseMutex();
Thread.Sleep(3000);
}
else
{
airstrip_status = 0;
Thread.Sleep(1000);
}
}
}
}
[/code]
Wątki się wykonują, ale zanim wystartują to wywołuję funkcję [u]CreateAirPlanes()[/u](tworzy ona samoloty i dodaje do listy) z klasy [u]Airstrips[/u]. I teraz problem:
Lista i samoloty nie są "widoczne" w wątkach(są widoczne ale tylko w przypadku gdybym wywołał funkcję [u]CreateAirPlanes()[/u], np. na poczatku [u]WaitForPlane()[/u] ... no ale wtedy każdy wątek będzie miał swoją "pulę" samolotów, a o to nie chodzi) ... czy da się tą "widoczność" osiągnąć czy to jest ślepa ścieżka?
Z góry dzięki za pomoc ;)
PS. Zawartość klasy Plane nie jest raczej tutaj potrzebna, więc nie umieszczałem ;)
Odpowiedzi: 1
No i rozwiązałem problem(a przynajmniej na razie działa ;)). Skorzystałem z ostatniego fragmentu kodu na http://codeguru.pl/article-656.aspx ... jak skończę projekt to postaram się umieść rozwiązanie problemu ;)
Strona 1 / 1