Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   interrupts Aktivierung (https://www.delphipraxis.net/122093-interrupts-aktivierung.html)

deplhi 9. Okt 2008 11:08


interrupts Aktivierung
 
Hallo Zusammen,

ich habe eine Applikation mit Delphi programmiert. beim ausfuhren der .exe werden die Interrupts deaktiviert so dass ich keine Kontrolle über die Appi habe. Diese kontrolle habe erst wider wenn die ausgefüuhrte Routine beendet wurde. Es ist unpraktisch das ich manchamal während der Ausführung einige Parameter einstellen will.

kann jemand mir bei dieser Aufgabe weiter helfen..

Danke!

Gruss

Medium 9. Okt 2008 11:51

Re: interrupts Aktivierung
 
Es werden keine Interrupts deaktiviert (das haut ab WinNT prinzipiell schon nicht mehr hin), sondern dein Programm arbeitet die Windows Nachrichtenschleife nicht mehr ab während es etwas anderes tut (welche u.a. zur Benachrichtigung über Benutzerinteraktion benutzt wird). Das ist ein Klassiker, und die passenden Suchbegriffe dazu lauten "Application.ProcessMessages" und "Threads". Über beides lässt sich haufenweise Material in der DP und im restlichen Netz finden, wobei ersteres als Quick&Dirty-Lösung hier und da ganz nett ist, Threads aber definitiv die elegantere und universellere Geschichte sind - dafür aber auch ein Thema für sich.

deplhi 9. Okt 2008 13:10

Re: interrupts Aktivierung
 
ein beispiel für Deaktivierung ist die Mausblockirung. meinst du das hängt auch mit Threads. mit dem Thema habe ich mich noch nie beschäftigt. was kann man damit din dem Falle erreichen.

danke!

oki 9. Okt 2008 13:25

Re: interrupts Aktivierung
 
Hi Deplhi,

willkommen in der DP :dp:

Schau mal, ob du dein Deutsch etwas verbessern kannst, fällt uns dann beim lesen leichter (solltest du kein Deutscher sein, dann ist es wieder super).

Es ist so, wie es Medium sagt, mittels einer "normalen" Exe hast du keine Zugriffe auf Interrupts. Wenn bei dir die Maus einfriert, dann hat das einen anderen Grund. Was für ein Programm ist das denn und was macht es?

Gruß oki

deplhi 9. Okt 2008 13:35

Re: interrupts Aktivierung
 
hi,

sorry, ich habe mich ja vertippt. eingentlich das programm ist schon komplex und es enthält viele units(15). aber was meinst du mit einer normalen exe.

danke im voraus!

oki 9. Okt 2008 13:42

Re: interrupts Aktivierung
 
Naja, wenn es nur Formulare mit etwas drumrum sind, dann kann da eigentlich nicht viel passieren. Hast du DLL's eingebunden die auf Schnittstellen, Treiber oder sonstiges zugreifen? Was macht deine Prozessorauslastung wenn die Maus hängt? Hast du Schleifen mit großen Zählern die beim Durchlauf keine Prozesszeit übrig lassen (sollte aber die Maus nicht bremsen). Gibt es Datenbankzugriffe wenn die Maus hängt?

Am besten, du beschreibst mal was dein Programm macht. Das werden mir zu viele Fragen.

Was weist denn überhaupt darauf hin, dass die Interrupts abgeschaltet werden? Oder glaubst du nur, dass das so ist?

Gruß oki

deplhi 9. Okt 2008 14:23

Re: interrupts Aktivierung
 
ja, ich habe DLLs eingebunden die auf IO-Schnittstellen zugreifen und ich habe auch lange Schleifen könnte es daran liegen. übrigens die Aufnahme der Prozessorauslastung wird auch gestoppt.
Ich bin nicht sicher ob da wirklich die Interrupts abgeschaltet werden oder es steckt dahinter was anders.

ich weiss gar nicht woran es liegen kann was mein Code betrifft. Weil ich ein Timer zum Protokollieren benutze konnte das damit zusammenhängen.


Danke für jede Hilfe

Deplhi

oki 9. Okt 2008 14:42

Re: interrupts Aktivierung
 
Am Timer liegt es sicher nicht. Imho sieht es so aus, dass dein Rechner bei speziellen Aufrufen so stark ausgelastet wird, dass erst mal gar nichts geht. Programme laufen standardmäßig immer mit mittlerer Taskpriorität. Somit kann dein eigentlicher Code den Rechner nicht wirklich ausbremsen (zumindest in einer einfachen Schleife). Das erkennt man daran, dass dein eigenes Fenster "einfriert" aber Windows weiter bedienbar bleibt.
Ich vermute, dass deine IO-Zugriffe schuld sind. Ist aber nur eine Vermutung. Du solltest mal schauen, bei welchen Vorgängen, Zugriffen das so ist. Also nehm dir mal alle IO-Zugriffe vor und teste mal welcher unter Umständen den Rechner blockiert.

Gruß oki

deplhi 9. Okt 2008 14:47

Re: interrupts Aktivierung
 
Danke für den Tipp. ich melde mich soweit ich mehr weiss


Alle Zeitangaben in WEZ +1. Es ist jetzt 21: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