AGB  ·  Datenschutz  ·  Impressum  







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

Frage zu Treads

Ein Thema von silentAMD · begonnen am 30. Dez 2003 · letzter Beitrag vom 25. Aug 2004
Antwort Antwort
Seite 1 von 3  1 23      
silentAMD

Registriert seit: 27. Sep 2003
203 Beiträge
 
Turbo Delphi für Win32
 
#1

Frage zu Treads

  Alt 30. Dez 2003, 00:13
Hallo leute,
ich hab ein problem mit meinem filemanager:
immer wenn eine datei, die ich per shellexecute öffne, ziemlich groß ist, reagiert mein programm nicht mehr, bis diese nach langer zeit geöffnet ist. da ist mir das TThread in den sinn gekommen, aber ich neige etwas ab, dieses zu benutzen, da große fehler dabei entstehen können (steht in nem delphi buch).

ist es sinnvoll (oder bringt es überhaupt etwas) einen shellexecute-befehl in einem eigenen tread zu öffnen? wenn ja, hat jemand ein beispiel?


PLEASE HELP!!!!
danke im vorraus.
  Mit Zitat antworten Zitat
Benutzerbild von SleepyMaster
SleepyMaster

Registriert seit: 18. Mai 2003
634 Beiträge
 
#2

Re: Frage zu Treads

  Alt 30. Dez 2003, 00:16
Delphi-Quellcode:
procedure run;
begin
Shellexecute...........
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  ThreadID: DWORD;
  ThreadHandle: THandle;
begin
ThreadHandle:=CreateThread(nil, 0, TFNThreadStartRoutine(@Run),
    nil, 0, ThreadID);
  if ThreadHandle<>0 then CloseHandle(ThreadHandle);
end;
[EDIT=SleepyMaster]Hatte Tags vergessen[/EDIT]
  Mit Zitat antworten Zitat
silentAMD

Registriert seit: 27. Sep 2003
203 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Frage zu Treads

  Alt 30. Dez 2003, 00:21
DANKE!!!

bringt das auch dann den erhofften vorteil?
  Mit Zitat antworten Zitat
Benutzerbild von SleepyMaster
SleepyMaster

Registriert seit: 18. Mai 2003
634 Beiträge
 
#4

Re: Frage zu Treads

  Alt 30. Dez 2003, 00:23
Keine Ahnung!

Aber teste es doch einfach mal!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Frage zu Treads

  Alt 30. Dez 2003, 14:27
Aua, das tut weh. Und wenn ich das sehe, dann stimmt es auch, was in dem Buch drinsteht, das Threads gefährlich sind. Aber das gilt nur, wenn man nicht weiß, was man macht.

CreateThread soollte man nicht benutzen, da
Zitat von Mein Tutorial:
In einem Delphi-Programm sollten sie nie die Funktion CreateThread direkt aufrufen. Benutzen sie stattdessen die
Funktion BeginThread. Grund: BeginThread kapselt zwar nur die API-Funktion CreateThread, setzt aber zusätzlich
noch die globale Variable IsMultiThread und macht somit den Heap thread-sicher.
Dann die Thread-Funktion: Das ist eine Funktion! keine Prozedur.
function Thread(p: Pointer): Integer; So hat sie auszusehen und nicht anders.

Aber bevor ich hier großartig alles noch mal tippe, hier der Link zu meinem Tutorial: http://www.luckie-online.de/tutorials/threads/
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von SleepyMaster
SleepyMaster

Registriert seit: 18. Mai 2003
634 Beiträge
 
#6

Re: Frage zu Treads

  Alt 30. Dez 2003, 14:34
Solang es läuft mach ich mir keine Gedanken, was an meinem Quellcode falsch ist!

Aber jetzt wo du mich schon extra draufhingewiesen hast nehme ich BeginThread anstelle von CreateThread (Auch wenn ich keinen Unterschied sehe).

Und ob die function jetzt so aussieht:
function Thread(p: Pointer): Integer; Oder ne procedure ist und so aussieht:
procedure Thread; Hat bei mir noch NIE einen Unterschied gemacht!
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Frage zu Treads

  Alt 30. Dez 2003, 14:37
Zitat von Luckie:
Dann die Thread-Funktion: Das ist eine Funktion! keine Prozedur.
function Thread(p: Pointer): Integer; So hat sie auszusehen und nicht anders.
Eigentlich empfielt Microsoft folgenden Aufbau:
function Thread(p: Pointer): DWord; Aber ob Prozedur oder Funktion ist ziemlich wurscht, wenn man weiß, dass man die Rückgabe nicht benötigt. Wenn ich sowieso immer 0 zurückgeben würde, kann ich auch eine Prozedur nehmen.
Aber i.A. schaden Fehlercodes nicht
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Frage zu Treads

  Alt 30. Dez 2003, 14:46
Zitat von SleepyMaster:
Solang es läuft mach ich mir keine Gedanken, was an meinem Quellcode falsch ist!
Nun ja. Und dann Schimpfen alle immer auf Microsoft, wenn Windows mal wieder abstürzt. Und keiner denkt daran, dass es eventuell gar nicht das OS war.

Zitat:
(Auch wenn ich keinen Unterschied sehe).
BeginThread setzt die globale Variable IsMultiThread auf True und macht so Zugriffe auf den Heap so threadsafe

Zitat:
Und ob die function jetzt so aussieht:
function Thread(p: Pointer): Integer; Oder ne procedure ist und so aussieht:
procedure Thread;
Na dann versuch mal Parameter an den Thread zu übergeben.

Zitat:
Hat bei mir noch NIE einen Unterschied gemacht!
Ja, bis es zum erstenmal kracht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von SleepyMaster
SleepyMaster

Registriert seit: 18. Mai 2003
634 Beiträge
 
#9

Re: Frage zu Treads

  Alt 30. Dez 2003, 14:58
Nun ja. Und dann Schimpfen alle immer auf Microsoft, wenn Windows mal wieder abstürzt. Und keiner denkt daran, dass es eventuell gar nicht das OS war. Mein XP!!! ist sau stabil

Zitat:
BeginThread setzt die globale Variable IsMultiThread auf True und macht so Zugriffe auf den Heap so threadsafe
Aja!?!

Zitat:
Na dann versuch mal Parameter an den Thread zu übergeben.
Ich wollte bis jetzt mal noch keinem Thread einen Parameter übergeben!

Zitat:
Ja, bis es zum erstenmal kracht.
Genau! Aber vorher muss ich mir auch keine Gedanken drüber machen!

Zitat:
Solang es läuft mach ich mir keine Gedanken, was an meinem Quellcode falsch ist!
und ich finde, dass sich andere solange auch keine Gedanke über meine (nicht vorhandenen) Probleme machen söllten!
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#10

Re: Frage zu Treads

  Alt 30. Dez 2003, 15:07
Hi SleepyMaster,

da will dir Luckie klar machen, wieso man es so machen sollte, und du beginnst sofort ihn zu attackieren.

Es hat auch _niemand_ von deinem Computer geredet, sondern auf dem Computer, wo deine Programm laufen sollen. Ich wäre auch wirklich sehr dankbar, wenn ein Programm aufgrund schlechter Programmierung meinen PC abstürzen lässt...

Du gehst immer von dir aus, und was ist mit anderen Leuten?

Luckie wird seine Aussage nicht ohne Grund gemacht haben, du solltest auf ihn hören.

so far
mirage228
David F.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 08:11 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