Autor Thema: Warten auf das Ende  (Gelesen 2921 mal)

Offline RKuehle

  • Junior Mitglied
  • **
  • Beiträge: 80
  • Geschlecht: Männlich
Warten auf das Ende
« am: 20.05.06 - 16:40:59 »
Hallo Forum !

Habe folgendes , eher allgemeingültiges, Problem:

Schreibe zur Zeit eine kleine HelpDesk-Anwendung. So nach dem Thema : Nutzer macht ein Ticket auf, Bearbeiter sehen neues Ticket , nehmen in Bearbeitung etc. Die DB liegt auf nem Server.
Als Hilfe für den Bearbeiter soll bei jedem Ticket eine Konfigurationsreport des Nutzer-PC erfolgen. Der Report wird per Shellaufruf von msinfo32 im Querysave-Event der Ticketmaske erstellt. Problem dabei: Das Programm läuft natürlich eine Weile (bis zu einer Minute) . Folge ist, dass ich irgendwie abfragen muss ob die Reportdatei schon existiert und fertig geschrieben ist. Im Moment sieht das bei mir so aus:

Do While isfile(fname) = False
If isFile(fname) Then
id=fname
End If
Loop
sleep 5

Function isFile(Byval sFileName As String) As Integer
On Error Resume Next
Dim lFileLength As Long
Const ATTR_NORMAL = 0

isFile = False
If Dir$(sFileName, ATTR_NORMAL) <> "" Then
lFileLength = Filelen(sFileName)
If (lFileLength > 0) Then isFile = True
End If
End Function

Das Do while macht den LoNo-Client für den Anwender dicht . Das akt. Dokument wird erst nach Erstellung der Datei gespeichert. Wie man sieht basiert das alles auch nicht wirklich auf sauber zu deklarierenden Eigenschaften der Datei , da nur geprüft wird ob sie existiert und die Dateilänge > 0 ist. Dann wird noch 5 Sekunden gewartet.

Meine Fragen dazu:

Wie sieht ein sinnvoll(erer) Ansatz aus um den Shellaufruf (also die Erstellung der Datei bzw. das Warten auf die fertige Datei) in den "Hintergrund" zu bringen, so dass der Client nicht blockiert wird? Gibt es eine sinnvollere Methode festzustellen, ob die Datei wirklich komplett geschrieben ist ? Evtl. Abfrage ob im Windows die msinfo32-Task noch läuft ?

Jeder Hinweis, Anregung, Mecker sind willkommen.

Danke !

Gruß RKuehle

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Warten auf das Ende
« Antwort #1 am: 20.05.06 - 16:48:00 »
Und schon wieder eines der beliebten Doppelpostings. Wo soll man das (nicht uninteressante) Problem denn nun verfolgen: Hier oder im Dominoforum?

Schade.

Bernhard

Offline RKuehle

  • Junior Mitglied
  • **
  • Beiträge: 80
  • Geschlecht: Männlich
Re: Warten auf das Ende
« Antwort #2 am: 20.05.06 - 16:58:17 »
@koehlerbv

Sorry !

Wusste nicht, dass beide Foren zusamenlaufen !

Wenn's stört, dann einfach das Teil abschießen.

Gruß

RKuehle

Offline Thomas Schulte

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: Warten auf das Ende
« Antwort #3 am: 20.05.06 - 17:09:31 »
Bernhard meint du solltest dich für eine Forum entscheiden.

Man könnte sich das auch aus !!Help!! klauen. In der Helpdeskanfrage gibt es eine Funktion die genau das macht und ich bin mir ziemlich sicher das die keine Minute braucht.
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline diali

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.023
  • Geschlecht: Männlich
Re: Warten auf das Ende
« Antwort #4 am: 21.05.06 - 10:02:08 »
nicht unbedingt für ein Forum entscheiden, aber wenigstens die Anfragen verlinken - ist nur fair denen gegenüber, die Dir versuchen zu helfen.
Gruß
Dirk

Offline smoki

  • Senior Mitglied
  • ****
  • Beiträge: 325
  • Geschlecht: Männlich
    • Smoki's Lotus Notes
Re: Warten auf das Ende
« Antwort #5 am: 21.05.06 - 10:55:31 »
Das mit dem Zusammenlinken hat auch etwas damit zu tun, dass andere Leute die Lösung finden... oder soll ich die dann doppelt Posten?!

Also wenn ich das richtig verstehe, willst du bis auf das ende eines Shell Aufrufs warten?

Dafür gibts die API-Funktion "WaitForSingleObject":

Beschreibung (die hoffentlich auch unter Lotus Script funktioniert) findest du hier: http://www.thescarms.com/vbasic/wait.asp




Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re: Warten auf das Ende
« Antwort #6 am: 21.05.06 - 11:19:06 »
Zitat
Dafür gibts die API-Funktion "WaitForSingleObject":

die aber den entscheidenden Nachteil hat, daß der Rechner u.U. komplett bis zur Beendigung des Programms blockiert ist.

Zudem ist msInfo32 auch von einem Dienst abhängig, die nich zwingend zum Betrieb von Windows erforderlich ist.
Ich habe auch mit der msInfo geliebäugelt, diese Lösung zur Abfrage der Systemkonfiguration aber wieder verworfen.
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline smoki

  • Senior Mitglied
  • ****
  • Beiträge: 325
  • Geschlecht: Männlich
    • Smoki's Lotus Notes
Re: Warten auf das Ende
« Antwort #7 am: 21.05.06 - 11:38:17 »
Ja... ich hab dieses Problem verschwiegen, sorry. ;)

Das Problem ist in der Tat, dass solch ein Agent auf dem Server den Agenten-Manager blockieren können oder der Client für ewig hängt. Ggf. sollte man statt INFINIT einen anderen Wert nutzten und nach dem WaitForSingleObject nochmals prüfen, ob alles glatt gelaufen ist.

Hab mir gerade erst "msinfo32" kurz angelesen. Ggf. kann man die benötigte Information auch besser mittels jeweiliger API-Declaration ermitteln?! Da in diesem Fall aber wohl der ganze Report erzeugt werden soll?! Doch ein etwas aufwendigers Thema...

Wenn du eine bessere Lösung dafür im !!HELP!! schon hast, sollte ich mir die aus neugier vielleicht auch mal Ansehen oder mir das zumindest merken, falls ich das mal irgendwann benötigen sollten :)

Gruss
Chris

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re: Warten auf das Ende
« Antwort #8 am: 21.05.06 - 11:53:21 »
Zitat
Wenn du eine bessere Lösung dafür im !!HELP!! schon hast, sollt

Nennen wir es eine Lösung, die zuverlässig bestimmte Informationen liefert. Aufgabe einer solchen Routine kann es nicht sein, den kompletten PC auszulesen.

Da kann in einem zweiten Step erfolgen. Zumeist gibt es im Unternehmen schon Lösungen dazu, die man anzapfen kann.

Ich habe die Routine damals in Help eingebaut, da sie mir in dem Moment wichtige Informationen liefern sollte. Es ging um die Einführung von SAP und da musste ermittelt werden welche Rechner noch mit schwachen CPU, zu wenig Speicher und einer Grafik ausgestattet waren, die allenfalls für KlötzchenDarstellung geeignet gewesen wäre.

Über API und WMI läßt sich die Grundfunktionaltität natürlich beliebig erweitern.

Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz