Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[DLL]Okno - wykonywanie funkcji w tle.

Ostatnio zmodyfikowano 2018-04-28 13:15
Autor Wiadomość
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.
P-170842
pekfos
» 2018-04-27 23:02:48
'Wątek'/'thread' to właściwe słowo.
P-170844
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.
P-170845
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.
P-170846
« 1 »
  Strona 1 z 1