versuche gerade einen alternierenden Timer zu programmieren. Der hierfür benutzte Serviçe ist ein asynchroner Callback, also ein Rücksprung, bei dem auch laufende Anwendungen umgangen werden können.
Das funktioniert auch ganz wie gewünscht bis zum 2. Aufruf der notify()-Prozedur. Dann ruft sich diese nicht mehr selbst auf. Oder anders formuliert, nachdem der Wert für die Variable cnt = 2 erreicht wurde, zählt der Timer scheinbar nicht mehr weiter.
Woran kann das liegen? Jeder Hinweis willkommen.
Dazu habe ich ein Beispiel programmiert, mit dem man es testen kann. Mann muss sich nur einen Dialog (Dialog1)mit einem Label (Label1) zusammenbauen und kann das testen.
Code: Alles auswählen
Option Explicit
Dim cnt
Dim oDlg
Dim oASync
Dim oCallback
sub testtimer
cnt = 0
oDlg = CreateUnoDialog(GlobalScope.DialogLibraries.Test.Dialog1)
oASync = CreateUnoService ("com.sun.star.awt.AsyncCallback")
oCallback = CreateUnoListener ("Callback_", "com.sun.star.awt.XCallback")
oASync.addCallback(oCallback, "Pos")
oDlg.getControl("Label1").Text = "Status: " & cnt
oDlg.execute()
end sub
Sub Callback_notify(aData)
If aData = "Pos" Then
wait(1000)
cnt = cnt+1
oDlg.getControl("Label1").Text = "Status: " & cnt
oCallback.notify("Neg")
ElseIf aData = "Neg" Then
wait(1000)
cnt = cnt+1
oDlg.getControl("Label1").Text = "Status: " & cnt
oCallback.notify("Pos")
End If
End Sub
Makromador