AGB  ·  Datenschutz  ·  Impressum  







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

Programm blockiert ganz Windows

Ein Thema von Gruber_Hans_12345 · begonnen am 29. Jun 2013 · letzter Beitrag vom 4. Jul 2013
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von stahli
stahli
Online

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.355 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Programm blockiert ganz Windows

  Alt 29. Jun 2013, 15:31
Einen Tipp habe ich nicht aber...

Ich kenne ein ähnliches Verhalten unter Win7 gelegentlich vom InternetExplorer bzw. beim öffnen mehrerer Register. Nach einigen Sekunden läuft es dann wieder.

Außerdem reagiert das System gelegentlich nicht mehr auf MouseOver und MouseClick (laufende Programme aber schon).
Es hilft dann der Affengriff und zwei Klicks auf abbrechen. Der erste bringt die Mauserkennung zurück, der zweite schließt die Systemebene.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)

Geändert von stahli (29. Jun 2013 um 16:33 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: Programm blockiert ganz Windows

  Alt 30. Jun 2013, 11:35
Hier rumzurätzeln warum das so ist bringt einfach nichts.
Fakt ist jedoch wenn du anderen Prozessen nicht die möglichkeit gibst weiterarbeiten zu können
hält das System nun mal (scheinbar)an bis dein prozess beendet ist.
Das ist einfach ein schlechter Programmierstil.

Die lösung ist doch einfach.
Blockiere nicht die Prozesse anderer Awendungen und gut ist.
Kann ich nicht.. gibt es nicht.

Das hilft immer

Delphi-Quellcode:
procedure WinProcessMessages;
// Allow Windows to process other system messages
var
  ProcMsg: TMsg;
begin
  while PeekMessage(ProcMsg, 0, 0, 0, PM_REMOVE) do
  begin
    if (ProcMsg.message = WM_QUIT) then
      Exit;
    TranslateMessage(ProcMsg);
    DispatchMessage(ProcMsg);
  end;
end;
Wer also will dir verbieten dafür zu sorgen das andere prozesse ihren Dienst verrichten können
FireBird ?

gruss

Geändert von EWeiss (30. Jun 2013 um 11:47 Uhr)
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.441 Beiträge
 
Delphi 2007 Professional
 
#3

AW: Programm blockiert ganz Windows

  Alt 1. Jul 2013, 15:48
mir war das einfach absolut neu, das wenn ich in mienem Programm die Message nicht verarbeite das dann alle anderen Programme dadurch in mittleidenschaft gezogen werden.

Aber das Problem, ist trotzdem ich habe leider auch Komponenten von mir, die einfach sehr sehr lange zum verarbeiten brauchen (zum Beispiel PivotTabellen, die rieseige Datenmengen verarbetien) und da kann ich nicht einfach rumwerklen im sourcecode, und dort ne message loop einbauen.
Genau so schwer wird es sein das in nen Thread auszulagern, da diese Komponente natürlich auch grafisch ist ... und die GUI braucht (die ja nicht thread sicher ist)
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#4

AW: Programm blockiert ganz Windows

  Alt 1. Jul 2013, 17:23
Nach meiner Erfahrung treten solche Effekte unter Windows7 dann auf, wenn eine Komponente den Explorer nutzt, und eine Ereignisbehandlung länger dauert. Ein Beispiel ist der DateTimePicker. Wenn man hier in den OnChange-Event folgendes einhängt

Delphi-Quellcode:
procedure TForm1.DateTimePicker1Change(Sender: TObject);
begin
  Sleep(10000)
end;
dann hängt nach der Änderung des Datums der gesamte Desktop für 10s. Das liegt daran, dass der Explorer als zentrale Bedienoberfläche für 10s blockiert ist. Bei anderen Komponenten (z.B. TEdit) ist ein solches Verhalten nicht zu beobachten.
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.441 Beiträge
 
Delphi 2007 Professional
 
#5

AW: Programm blockiert ganz Windows

  Alt 1. Jul 2013, 18:59
Nach meiner Erfahrung treten solche Effekte unter Windows7 dann auf, wenn eine Komponente den Explorer nutzt, und eine Ereignisbehandlung länger dauert. Ein Beispiel ist der DateTimePicker. Wenn man hier in den OnChange-Event folgendes einhängt

Delphi-Quellcode:
procedure TForm1.DateTimePicker1Change(Sender: TObject);
begin
  Sleep(10000)
end;
dann hängt nach der Änderung des Datums der gesamte Desktop für 10s. Das liegt daran, dass der Explorer als zentrale Bedienoberfläche für 10s blockiert ist. Bei anderen Komponenten (z.B. TEdit) ist ein solches Verhalten nicht zu beobachten.
Das muss ich morgen gleich mal probieren, ob es genau das verhalten ist, was ich bei meinem Programm auch festegestellt habe
Wie gesagt es sieht bei mir auch aus wie wenn "nur" der Desktop hängt
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: Programm blockiert ganz Windows

  Alt 1. Jul 2013, 19:09
Zitat:
Das ist unmöglich. Es sei den du gibst deinen Prozess die höchste Priorität
Dann widersprichst du dir selbst!
Erst unmöglich und dann doch?

Na egal... sollte mich vielleicht etwas mehr zurückhalten.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.373 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Programm blockiert ganz Windows

  Alt 2. Jul 2013, 08:14
Das passiert beim Open einer Query?
Dann mach davor doch davor ein DisableControls und danach ein EnableControls. Dazwischen vielleicht noch ein Application.ProcessMessages.

Ich kann mir nicht vorstellen, dass das Open den Rechner derartig ausbremst, aber die verbundenen Controls können schon einen ganze Menge verursachen.
Peter
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

AW: Programm blockiert ganz Windows

  Alt 4. Jul 2013, 17:45
Zitat:
Das ist unmöglich. Es sei den du gibst deinen Prozess die höchste Priorität
Dann widersprichst du dir selbst!
Erst unmöglich und dann doch?
Wenn man nicht explizit an den Prioritäten dreht natürlich, das meinte ich mit dem Unmöglich.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.441 Beiträge
 
Delphi 2007 Professional
 
#9

AW: Programm blockiert ganz Windows

  Alt 2. Jul 2013, 09:58
Nach meiner Erfahrung treten solche Effekte unter Windows7 dann auf, wenn eine Komponente den Explorer nutzt, und eine Ereignisbehandlung länger dauert. Ein Beispiel ist der DateTimePicker. Wenn man hier in den OnChange-Event folgendes einhängt

Delphi-Quellcode:
procedure TForm1.DateTimePicker1Change(Sender: TObject);
begin
  Sleep(10000)
end;
dann hängt nach der Änderung des Datums der gesamte Desktop für 10s. Das liegt daran, dass der Explorer als zentrale Bedienoberfläche für 10s blockiert ist. Bei anderen Komponenten (z.B. TEdit) ist ein solches Verhalten nicht zu beobachten.
Das muss ich morgen gleich mal probieren, ob es genau das verhalten ist, was ich bei meinem Programm auch festegestellt habe
Wie gesagt es sieht bei mir auch aus wie wenn "nur" der Desktop hängt
Also das hätte ich gerade getestet, da hängts bei mir nicht, zumindest nicht in nem kleinen testprogramm nicht -> nur das Programm selbst natürlich, aber der Rest Desktop und co gehen noch
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.441 Beiträge
 
Delphi 2007 Professional
 
#10

AW: Programm blockiert ganz Windows

  Alt 2. Jul 2013, 10:19
Also hab gerade ein kleines Testprogramm geschrieben, mit dem ich das ganze nachstellen wollte -> und siehe da
in dem Testprogramm bleibt der Desktop aktiv -> also keine Probleme, und nur mein kleines Testprogramm hängt

Also muss es irgendeinen nebeneffekt von meinem Hauptprogramm sein (Aber das sind leider schon doch ein paar zeilchen ... )
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz