Nieprawidłowe dojście okna

Odpowiedz Nowy wątek
2006-11-16 13:33
0

Witam. Post był w 2002 roku - coś podobnego na ten temat ale nie ma konkretnej odpowiedzi co z tym zrobić. A więc mamy program i dwa wątki. Jeden wątek standardowy formy i jeden przezemnie tworzony. W wątku ktory tworzę odwołuję się do ListView - Form1.ListView1.Items.Add("jakis text") - pisze z pamieci ale chyba taka jest składnia. Jest ok. - text się doda do ListView. Ale gdy zamiast do ListView napisze do Memo1 to niestety aplikacja się zawiesza i dostaję error 1400 "Nieprawidłowe dojście okna" . Czy ktoś może na to poradzić. <ort>Przecierz </ort><ort>niema </ort>róznicy zbytniej między Memo a ListView to i to są komponentami VCL jednak jedno sprawia problem.
Pozdrawiam.

Pozostało 580 znaków

2006-11-16 14:10
0

synchronize jest :>


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Pozostało 580 znaków

2006-11-16 15:54
mmmmmm
0

Form1.Memo1.Lines.Add

Pozostało 580 znaków

2006-11-21 10:16
0

Dobra może to się komuś przyda a więc:
Mamy zabroniony dostęp do komponentów VCL z poziomu wątku pobocznego jednak nie zawsze jak sprawdziłam. w jednym przypadku jest ok a w drugim mamy error nieprawidłowe doście okna. Ktoś mówił że wyślij do okna komunikat Sendmessage lub PostMessage a to gu...no prawda też nie działa. Jest jeszcze synchronizacja ale nad tym trzeba sporo posiedzieć. Sposób trochę prymitywny ale działa. A więc jeśli w wątku mamy Memo1.lines.add lub co kolwiek z VCL to tworzymy zmienna globalną i jej przypisujemy wartość. Wrzycamy Timera na forme i jego na Disabled a interwał na 1ms. nastepnie w timerze przypisujemy wartość memo ze zmiennej globalnej i dajemy też timer na disabled. W takim przypadku mamy to że timer sam tworzy osobny wątek a jak wiemy jest on komponentem VCL więc nie stwarza żadnych problemow.

Pozostało 580 znaków

2006-11-21 12:51
0

agnieszka gdybyś coś o wielowątkowości w Delphi poczytała to byś nie pisała takich głupot. Synchronizacja (czy to przez mechanizm wbudowany w delphi - synchronize czy też przez mutexy lub sekcje krytyczne) to rzecz normalna jeśli chcesz się z wątku dobrać do obiektów innego wątku, które nie są threedsafe. Twój sposób z timerem jest śmieszny - zrób to po normalnemu i użyj synchronize jak panowie z borlanda przykazali jak Ci się nie chce w mutexy czy sekcje krytyczne bawić


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Pozostało 580 znaków

2006-11-21 13:31
agnieszkaa
0

Jak bym miała przykład z mutexami czy synchronize w C++Builderze to bym i tak zrobiła. Ale widzisz to co napisałam - mój sposób to każdy zrobi (czy to w Delphi czy w Builderze) a ty zamiast wczesniej coś poradzić jakiś kawałek kodu wkleić - nic- inni też umieją tylko mówić.

Pozostało 580 znaków

2006-11-21 15:15
0

jaki kawałek kodu?? Miałem się domyślać co tam masz?? Zadałem Ci bardzo proste pytanie - wystarczyło odpowiedzieć tak lub nie to by przynajmniej było wiadomo gdzie szukać błędu - odpowiedziałaś :>

Nastepnym razem jak będziesz o coś pytać to albo rób to konkretnie albo odpowiadaj na pytania, które prowadzą do rozwiązania problemu ...


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

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