sarekhl
Goto Top

VB-Programm: CPU-Auslastung 100%

Hallo allerseits,

ich hatte in der Vergangenheit einen Weg gesucht, das Einstecken eines USB-Sticks mit einem VB5-Programm zu erkennen und daraufhin eine Aktion durchzuführen. Leider habe ich keine Tipps dazu bekommen, so daß ich mir eine vermutlich wenig elegante Lösung gebastelt habe.

Und zwar habe ich eine Schleife gebastelt, in der immer wieder der nächste freie Laufwerksbuchstabe (den dann ja der Stick bekommen würde) auf seinen freien Speicherplatz getestet wird (http://www.vbarchiv.net/tipps/details.php?id=174). Solange ein negativer Wert (wird in der Funktion als "Laufwerk nicht bereit" interpretiert) zurückgegeben wird, wird die Schleife wiederholt, sobald ein positiver Wert ermittelt wird, wird sie verlassen und die Befehle für den Stick ausgeführt.

Um das System zu entlasten, habe ich gleich zu Beginn des Programms die Prozeßpriorität auf IDLE_PRIORITY_CLASS gesetzt (http://www.vbarchiv.net/tipps/details.php?id=1136).

TROTZDEM zeigt das Programm im Task-Manager eine CPU-Auslastung von 100% und verlangsamt den Server, auf dem es läuft, stark.

Wie kann ich das Problem lösen? Es muß doch irgendwelche Programmiertechniken geben, die dafür sorgen, daß die Prüfung nur einmal pro Sekunde ausgeführt wird und dazwischen die gesamte Rechenleistung anderen Programmen zur Verfügung steht ...


Danke im Voraus,
André

Content-Key: 88814

Url: https://administrator.de/contentid/88814

Printed on: April 19, 2024 at 16:04 o'clock

Member: bastla
bastla May 31, 2008 at 07:58:53 (UTC)
Goto Top
Hallo SarekHL!

Auch für VB5: SetWaitableTimer mit Visual Basic

Grüße
bastla
Member: misterdemeanor
misterdemeanor May 31, 2008 at 10:10:56 (UTC)
Goto Top
Mahlzeit!

VB5?

Whoppa ya hoppla! SarekHL, Du setzt VB5 ein? Heidewitzka!

Mit dem ersten geschafften Lebensdrittel (24 Jahre) würde ich ja in eine andere Entwicklerumgebung (face-smile) geboren; VB6 also auch nur am Rande angekratzt. Daher weiß ich nicht inwiefern man sich mit VB5 in das Windows Messaging einklinken kann.

Insbesondere ziele ich hier auf das implementieren einer WindowsProc in VB5 an.
Was ich eigtl. an Denkanstoß geben möchte ist das fetchen der WM_DEVICECHANGE Message.

Ein Timer wäre somit unnötig.

Allerdings möchte ich dann noch zu bedenken geben das ein evtl. bereits vor dem Start der VB5 Anwendung eingesteckter USB Strick anderweitig erkannt werden muss.
Nicht das sich das ganze Vorhaben noch daran aufhängt face-wink

**BG, Felix -misterdemeanor-
Member: misterdemeanor
misterdemeanor May 31, 2008 at 10:12:01 (UTC)
Goto Top
Mahlzeit!

VB5?

Whoppa ya hoppla! SarekHL, Du setzt VB5 ein? Heidewitzka!

Mit dem ersten geschafften Lebensdrittel (24 Jahre) würde ich ja in eine andere Entwicklerumgebung (face-smile) geboren; VB6 also auch nur am Rande angekratzt. Daher weiß ich nicht inwiefern man sich mit VB5 in das Windows Messaging einklinken kann.

Insbesondere ziele ich hier auf das implementieren einer WindowsProc in VB5 an.
Was ich eigtl. an Denkanstoß geben möchte ist das fetchen der WM_DEVICECHANGE Message.

Ein Timer wäre somit unnötig.

Allerdings möchte ich dann noch zu bedenken geben das ein evtl. bereits vor dem Start der VB5 Anwendung eingesteckter USB Strick anderweitig erkannt werden muss.
Nicht das sich das ganze Vorhaben noch daran aufhängt face-wink

**BG, Felix -misterdemeanor-
Member: bastla
bastla May 31, 2008 at 10:19:46 (UTC)
Goto Top
@misterdemeanor

A propos "Strick" - kannst Du als Programmierer bestätigen, dass die Verwendung von "Knoten" anstatt "Schleifen" ein Programm robuster macht? face-wink

Grüße
bastla
Member: SarekHL
SarekHL May 31, 2008 at 10:34:58 (UTC)
Goto Top
Whoppa ya hoppla! SarekHL, Du setzt VB5 ein?

Ja ... zum einen habe ich kein Geld für eine aktuelle MSDN-Version, zum anderen fehlt mir die Zeit, mich in VB.net einzuarbeiten. Schließlich ist Programmieren nicht meine Hauptaufgabe, ich mache das nur ab und zu, um mir mal ein Tool zu erstellen, wenn ich keine geeignete Fertiglösung finde ...
Member: misterdemeanor
misterdemeanor May 31, 2008 at 10:35:24 (UTC)
Goto Top
@bastla

Da lieferst Du den Anstoß zu einem infinitiven Regress...
Nur mal so zur Ablenkung um Dich ein wenig zu beschäftigen (und ich hoffe Du kannst Dich schnell entscheiden):
Was war zuerst da: die Henne oder das Ei?

BackToOffTopic:
Die beinahe philosophische Frage die Du in den Raum gestellt hast wird im Endeffekt doch sowieso nur vom Henker entschieden.
Member: misterdemeanor
misterdemeanor May 31, 2008 at 10:43:46 (UTC)
Goto Top
kein Geld für eine aktuelle MSDN-Version

Wenn wir jetzt einmal von einem MSDN Abo absehen scheinst Du ja nichtsdestotrotz Zugang zum Internet zu haben.

Ansonsten jemanden konsultieren der/die Dir eine Offline Version downloadet mit der Du auch an nicht am Internet verbundenden Rechnern nachschlagen kannst:
MSDN Library für Visual Studio 2008
Da lässt sich natürlich über den Document Explorer streiten...

BTT:
Lass mal hören inwiefern es möglich ist in VB5 eine WinProc zu implementieren (hab geggogled wie blöd aber kein example für eine WindowsProc unter VB5 gefunden; da aber API calls von VB5 möglich sind müsste das ja selbtverständlich möglich sein).
Member: SarekHL
SarekHL May 31, 2008 at 10:52:58 (UTC)
Goto Top
Wenn wir jetzt einmal von einem MSDN Abo absehen scheinst Du ja nichtsdestotrotz Zugang zum Internet zu haben.

Ja und? Dann habe ich ja immer noch keinen Compiler für vb.net ... irgendwie muß ich doch meine EXE daraus machen ...

Lass mal hören inwiefern es möglich ist in VB5 eine WinProc zu implementieren

Möglich ist das bestimmt, aber ich habe jetzt nicht die Muße, mir den Code selbst zu erarbeiten. Ich habe auf www.vb-archiv.de eine CPU-neutrale Wait-Funktion gefunden, die ich mir jetzt eingebaut habe. Damit habe ich die CPU-Auslastung in den Griff bekommen ...
Member: misterdemeanor
misterdemeanor May 31, 2008 at 11:13:12 (UTC)
Goto Top
Ja und? Dann habe ich ja immer noch keinen Compiler für vb.net ... irgendwie muß ich doch meine EXE daraus machen ...

MeiOmei...jetzt würde ich lügen das (at least) im .Net Framework 2.0 das zugehörige SDK und damit die Compiler aller MS .Net Sprachen inbegriffen ist. Ggfls. googlen.

Warum Du das jetzt aber mit dem Microsoft Developer Network assoziierst ist mir unklar. Um meine hauptsächliche Begriffsdefinierung zu MSDN zu erläutern : In erster Linie verbinde ich damit kein Netzwerk sondern eher eine Art "Nachschlagewerk" / Bibliothek / Technologie-Referenz.

Ich habe auf www.vb-archiv.de eine CPU-neutrale Wait-Funktion gefunden, die ich mir jetzt eingebaut habe. Damit habe ich die CPU-Auslastung in den Griff bekommen ...

Super! Dann ist das Thema für Dich erledigt?...Wait Function?!

ich habe jetzt nicht die Muße, mir den Code selbst zu erarbeiten.

War sogar der Meinung hier bereits etwas, das in gleiche Richtung ging, erarbeitet zu haben. Damals mit WMI.
Dachte schon hier ist ´ne Nuss zu knacken; da Du aber bereits das Fass aufgemacht hast freut es mich umsomehr face-wink

Jetzt ist auch langsam Zeit den Grill anzuschmeissen um sich Rücklagen für das Serbien Spiel zu verschaffen...

BG, Felix -misterdemeanor-