Domino 9 und frühere Versionen > ND7: Entwicklung
Fortschrittsbalken verwenden
Thomas Schulte:
--- Zitat von: LN4ever am 16.06.08 - 14:21:37 ---Ich helfe mir heute viel lieber mit simplen Punktreihen als Print (wobei Print ein Speicherfresser ist - nicht zu viele nehmen).
--- Ende Zitat ---
Print ist nicht nur ein Speicherfresser (lokal) sondern auch ein gewaltiger Performancefresser wenn es in Agents die auf den Server eingesetzt werden intensiv verwendet wird. Jeder Print auf die Konsole wird nämlich auch ins Log geschrieben.
Axel:
--- Zitat von: LN4ever am 17.06.08 - 08:47:54 ---Schon das Beispielprogramm enthält keinen Errorhandler, der ein
Delete cProgress
erzwingt.
--- Ende Zitat ---
Da hast du mit Sicherheit recht. Ich hatte mir immer wieder mal vorgenommen die ganze Sache zu optimieren und eben ein Fehlerbehandlung einzubauen. Bei dem guten Willen ist es leider bisher geblieben. Teilweise aus Zeitgründen und auch aus dem Grund, dass bei uns leider die Entwicklungsarbeit ganz massiv zurückgefahren wurde.
Axel
LN4ever:
Thomas' Einwand mit der Warnung vor dem Fortschrittsbalken im Background-Agent ist ja eine süße Vorstellung. Damit der Server auch immer weiß, wie lange ich ihn wohl noch quälen werde, zeigt er mir unmißverständlich an, daß ich ihn quäle.
Aber wenn man die Idee genauer verfolgt, dann ist der Einwand gar nicht so unsinnig, denn man verwendet den gleichen Code manchmal im Userinterface (wo ein Fortschrittsbalken Sinn macht), aber auch in einem Hintergrundagenten (wo man den Sinn eines Fortschrittsbalkens - höflich formuliert: hinterfragen muß). Und dann kommt man zu einer Frage, die bis heute zu den "offenen Fragen" bei mir gehört: wie finde ich heraus, ob es im momentanen Kontext ein UserInterface gibt ? Funktioniert so etwas wie der folgende Code ? Muß man das in eine separate Lib packen ? Was sagt denn ein Agent dazu ?
Function HasUI As integer
Dim xUIws as Variant
On Error Goto NoUI
Set xuiws=New NotesUIWorkspace
HasUI=True
ENDE:
Exit Sub
NoUI:
HasUI=False
Resume ENDE
End Sub
Gruß
Norbert
Glombi:
Das mache ich so:
To get: flag = notesSession.IsOnServer
Legal values
True indicates that the script is running on a server.
False indicates that the script is running on a workstation.
Damit lassen sich auch UI-Klassen in einem Agenten verwenden, der sowahl im UI als auch als Backend läugt (bspw. Web Agenten).
Bsp:
If Not session.IsOnServer then
Dim ws as NotesUIWorkspace
....
End If
Ist nicht sauber, ich weiß. Aber ich musste mal auf die Schnelle einen Agenten, der nur für das UI war, zum Web Agenten machen.
Andreas
diali:
ein zeitgesteuerter Agent wird dann nicht mehr funktionieren, da UI-Klassen verwendet werde.
Eine Idee ist es den Agenten mit dem Servername zu unterzeichenen, auf dem der Agent laufen soll, dann kann der Username aus der Session mit dem Servername aus der DB verglichen werden. Sind diese identisch, wird der Agent auf dem Domino ausgeführt.
Zu Print.
Da kann die Performance gesteigert werden, indem man vorher ein IF-Abfrage macht und nur jede x. Print-Meldung ausgibt. Z.B.:
--- Code: ---If i mod 20 = 0 then
Print i & " / " & dc.Count
End If
--- Ende Code ---
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln