Watki a komponenty

Odpowiedz Nowy wątek
2006-08-16 18:35
0

mam wątek animujacy cos tam
chcialbym pobrac wartosc trackbara wewnatrz tego watku
np tak

Thread.Sleep(trackBar2.Value);
 

ale nie mam dostepu z watku do komponentow utworzonych poza tym watkiem
jak to pobrac ???

Pozostało 580 znaków

2006-08-16 18:47
0

Musisz uzyc Invoke.

pozdrawiam
johny


You need to learn how to walk
before you can run

Pozostało 580 znaków

2006-08-16 19:02
0

tak tez myslalem
tylko za bardzo nie wiem o co biega z tym delegate method itp
jak to ma wygladac co to za parametry ...

Pozostało 580 znaków

2006-08-16 19:18
0

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


You need to learn how to walk
before you can run

Pozostało 580 znaków

2006-08-16 22:56
0

Dzieki wielki
śmiga
oprocz tego ze to int to bledow nie bylo

Pozostało 580 znaków

2006-08-16 23:37
0

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"

Pozostało 580 znaków

2006-08-17 00:50
0
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


You need to learn how to walk
before you can run

Pozostało 580 znaków

2006-08-17 02:29
0
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

Pozostało 580 znaków

2006-08-17 13:30
0

ok mam
tam gdzie wywoływałem bitmape dalem

lock(bitmapa){wywołanie bitmapy}

i dziala

Pozostało 580 znaków

2006-08-17 13:46
0

A widzisz - na to bym nie wpadl, ze zwykla synchronizacja wystarczy, a w sumie takie oczywiste... :)

pozdrawiam
johny


You need to learn how to walk
before you can run

Pozostało 580 znaków

2006-08-18 12:43
0

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

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0