[DLL]Okno - wykonywanie funkcji w tle.
Ostatnio zmodyfikowano 2018-04-28 13:15
Blef96 Temat założony przez niniejszego użytkownika |
[DLL]Okno - wykonywanie funkcji w tle. » 2018-04-27 21:06:57 Witam, staram się napisać DLL, która wywoła konsolę i będę mógł za jej pomocą sterować funkcjami programu włączać/ wyłączać je, napisałem do momentu podania komendy, program wywołuje funkcję i niestety wtedy nie mogę już wpisać żadnej innej komendy, ponieważ funkcja opiera się na pętli nieskończonej i podejrzewam, że do czasu kiedy funkcja się nie wykona, nie mogę operować na menu, ponieważ to kolejna pętla nieskończona na case. Czy ktoś mógłby mi sprecyzować keyword dla zjawiska, które opisałem, albo podesłać do tego kurs/tut? W skrócie, chcę żeby po wpisaniu komendy do konsoli funkcja się wykonywała "w tle?/2 wątku?", a ja mógł wpisać np. drugą komendę ją wyłączającą. Przykład: Wpisuję /komenda on - funkcja(petla) zaczyna sie wykonywac i w momencie kiedy chce, ją przerwać wpisuje /komenda off. |
|
pekfos |
» 2018-04-27 23:02:48 'Wątek'/'thread' to właściwe słowo. |
|
Blef96 Temat założony przez niniejszego użytkownika |
gui. » 2018-04-28 00:56:17 Hej, dzięki za odpowiedź. Zrezygnowałem z Console, zrobiłem GUI 'czysto' w Visual Studio, robię DLL do gry i funkcja działa, ale tak jak poprzednio po kliknięciu 'ON' funkcja dziala, a kiedy próbuje kliknąć off mam freeze i crash gry. Czytając krótko o CreateThread napisałem kawałek takiego kodu:
void ActiveMobber() { MobberThread = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)Mobber, 0, 0, 0); }
void DeactiveMobber() { if (MobberThread) { TerminateThread(MobberThread, 0); CloseHandle(MobberThread); MobberThread = 0; } }
Niestety powoduje on natychmiastowy crash po włączeniu funkcji. |
|
pekfos |
» 2018-04-28 13:15:50 Zabicie wątku praktycznie nigdy nie jest dobrym rozwiązaniem. Zamiast robić pętlę nieskończoną i zabijać wątek, sprawdzaj w pętli wartość flagi i gdy chcesz zakończyć wykonanie wątku, ustaw flagę tak by wątek wiedział, że ma się zakończyć i zaczekaj na jego zakończenie. Jeśli piszesz w C++, możesz chcieć użyć wątków z biblioteki standardowej C++, są prostsze w użyciu. |
|
« 1 » |