AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Thread freigeben, wenn er festklebt :)

Ein Thema von MyRealName · begonnen am 31. Mär 2015 · letzter Beitrag vom 28. Sep 2017
Antwort Antwort
Seite 3 von 3     123   
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#21

AW: Thread freigeben, wenn er festklebt :)

  Alt 26. Sep 2017, 10:20
Zitat von Larry Osterman:
How many times does
it have to be said: Never
call TerminateThread.
Siehe https://blogs.msdn.microsoft.com/old...14-00/?p=91811
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.680 Beiträge
 
Delphi 5 Professional
 
#22

AW: Thread freigeben, wenn er festklebt :)

  Alt 26. Sep 2017, 15:00
aber
TerminateThread(FWorker.ThreadID,iThreadExitCode) = false
Weil du immer noch die Thread ID benutzt statt des Handles.

Generell stimmt ich aber zu: Priorität sollte haben, zu verhindern, dass der Thread hängt. Warum er das tut, kann natürlich keiner sagen außer dir selbst.

Grüße
Dalai
  Mit Zitat antworten Zitat
4dk2

Registriert seit: 4. Sep 2007
176 Beiträge
 
#23

AW: Thread freigeben, wenn er festklebt :)

  Alt 28. Sep 2017, 08:13
Danke für eure Hilfe, es Funktioniert jetzt.

Delphi-Quellcode:
      iThreadID:=FWorker.ThreadID;
      hThread:=OpenThread(THREAD_TERMINATE or THREAD_QUERY_INFORMATION ,false,iThreadID);
      if hThread<>0 then
      try

        System.SetLastError(ERROR_SUCCESS);
        iThreadExitCode:=0;
        if not GetExitCodeThread(hThread,iThreadExitCode) then
          sMsg:=SysErrorMessage(GetLastError);

        System.SetLastError(ERROR_SUCCESS);
        bOK:=TerminateThread(hThread,iThreadExitCode);
        if bOK then
          sMsg:='OK'
        else
        begin
          sMsg:=SysErrorMessage(GetLastError);
        end;
      finally
        CloseHandle(hThread);
      end;
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#24

AW: Thread freigeben, wenn er festklebt :)

  Alt 28. Sep 2017, 08:19
PS: Ohne auf die Notwendigkeit von TerminateThread(..) einzugehen: Das ständige Zwischenspeichern des Rückgabewertes, SysErrorMessage usw. lässt sich vereinfachen: Schau dir mal den Aufruf System.SysUtils.Win32Check(..) an.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz