Wątki i zmienne...

0

Witam!
Mam taki problem. Na formie mam edit z ustawiana zmienna na m_edit.
Deklaruje watek:

DWORD WINAPI ThreadFunction(PVOID pvParam)
{
//kod...
}

Dlaczego wewnatrz tego watku nie moge uzyc po prostu:

UpdateData(FALSE);
CString zmienna;
zmienna = m_edit;

Jak wewnatrz tego watku pobrac zawartosc edit'a? :)

0

a wiesz ze form to jest KLASA a ta Twoja funkcja jest WOLNOLATAJACA a nie jest METODA tej klasy..?

jakby byla metoda, to by nie bylo problemu z dostepem.. ale nie mozesz jej uczynic metoda klasy, bo nie bedziesz mogl uzyc jej jako funkcji glownej watku. jedyna rada to wykorzystac parametr: PVOID pvParam. odpalajac watek, podaj za ten parametr wskaznik na ten formularz. w funkcji watku, na samym poczatku zrzutuj pvParam na twojform*, i z tego wskaznika bedziesz mogl sobie wyciagnac m_edit ..o ile jest publiczne

0

Ok... chyba sobie poradze :) Jak nie to bede pisac :P
Dzieki za pomoc!

0
Biela napisał(a)

Ok... chyba sobie poradze :) Jak nie to bede pisac :P
Dzieki za pomoc!

Jednak maly problem z tym "rzutowaniem pvParam na twojform*"...
Odpalam watek tak:

 CreateThread(NULL, 0, ThreadFunction, (PVOID)*IDD_BIELA_DIALOG, 0, &IdWatku);

Co mam dopisac w funkcji watku i jak sie odwolac do (publicznego) m_edit1?

0

rzutowanie:

DWORD WINAPI ThreadFunction(PVOID pvParam)
{   MojaKlasa* ptr = (MojaKlasa*)pvParam;
     ptr->m_edit ...
}

create thread:
IDD_BIELA_DIALOG to jest identyfikator zasobu zawierajacego metadane opisujace wyglad formularza. ja mowilem o wskazniku na obiekt formularza:

CreateThread(NULL, 0, ThreadFunction, wskaznik, 0, &IdWatku);
0

a czy istnieje mozliwosc aby do jednego watku przekazac 2 parametry? z przekazywaniem jednego sobie radze ale co z wieksza iloscia?

0

Stwórz strukturę/klasę do niej wpisz wszystko co ci się zechce i przekaż jej adres.

0

i uważaj, żeby jej czas zycia sie nie skonczyl, zanim watek ja odczyta;)

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