Przyklad z palca, wiec moga byc drobne bledy:
wszystko w formatce gdzie jest TrackBar
delegate String getValue();
private String getTrackBarValue()
{
return trackbar.Value;
}
public String getTrackBarValueSafe()
{
return (String) Invoke(new getValue(getTrackBarValue));
}
i w watku of coz wywolujesz getTrackBarValueSafe()
pozdrawiam
johny
Prim0 napisał(a)
mam jeszcze jedno pytanko
animowane elementy to bitmaby albo image
jesli animacja danego elementu jest akurat włączona w wątku to niestety mam do niej ograniczony dostęp tzn.
bywa tak ze dostaje błąd "obiekt jest używany gdzie indziej"
Mozesz podac przyklad? Bo nie za bardzo kumam o co chodzi. A z intem rzeczywiscie, nie zauwazylem :P
pozdrawiam
johny
grafikaE2.FillRectangle(drawW, 1, 1, Pole.grafa[i, j].Width * 4, Pole.grafa[i, j].Height * 4);
np ta linijka jest wewnątrz wątku
i na niej zatrzymuje sie debuger z bledem Obiekt jest uzywana gdzie indziej
mysle ze konkretnie chodzi o Pole.grafa[i, j].Width
niekiedy debuger wywali jakies inne rysowanie poza watkiem z tym samym komunikatem
czasami czepi sie o jakis parametr width height
ale bywa tez ze o np Setpixel
nie pozwala edytowac bmpa ktory akurat sie przewija
Mimo wszystko cos mi sie kaszani z tymi watkami
wyglada to tak
mam 2 watki watekA i watekB
watek a leci na jedna procedure animujA a watekB na druga animujB
procedurki animujA i animujB animuja obiekt ale obiektow moze byc sporo tablica [16,32]
i teraz tak
if (comboBox_ET.SelectedItem == null || comboBox_ET.SelectedItem.ToString() == "Brak")
{
Pole.anim[Pole.wi, Pole.wj] = 1;
niesk[Pole.wi, Pole.wj] = 10; // to opuszcza petle w procedurce animacji
//if (watekA.IsAlive) { watekA.Abort(); }
//if (watekA.IsAlive) { watekA.Abort(); }
}
if (comboBox_ET.SelectedItem == null || comboBox_ET.SelectedItem.ToString() == "Wjazd z lewej")
{
Pole.anim[Pole.wi, Pole.wj] = 2;
if (watekA.IsAlive) { watekA.Join(); } else { watekA.Start(); }
}
if (comboBox_ET.SelectedItem == null || comboBox_ET.SelectedItem.ToString() == "Wjazd z prawej")
{
Pole.anim[Pole.wi, Pole.wj] = 3;
if (watekB.IsAlive) { watekB.Join(); } else { watekB.Start(); }
}
problem polega na tym ze w momencie kiedy kilka obiektow korzysta z jednego watku np watekA i pozniej wylaczam animacja (czyli pierwszy if w powyzszym kodzie) dla jednego z tych obiektow to pozostale jakos dziwnie skacza