| |
|
|
- Página 1 - |
|
| ¡Hola IF...
Yo habs veces getestet y hoffe nichts falso gemacht a haben: KompilierenMarcaSeparación $U thread.pcu = thread.
DEF @GetDlgCtrlID(1) !"USER32","GetDlgCtrlID"
DEF @ButtonClicked(1) @GetDlgCtrlID(@&(1))=-%MENUITEM
Testprogramm Timer
Profan Version 9
$H Windows.ph
-Main----------------------------------------------------------------
Declare Timer_Busy%,Ende%
Declare TimerID&,Create%,T_Text&,Test#
WindowStyle 26
WindowTitle "Timertest PHU-60"
Window 100,100 - 370,200
cls
Let T_TEXT&=@CREATETEXT(%HWND,"",30,30,300,30)
-Menue---------------------------------------------------------------
PopUp "&Programm"
AppendMenu 108,"&Einstellungen"
AppendMenu 109,"&Ende"
Ende% = 0
Timer setzen (4x pro Sekunde, 250ms)
thread.start 1,1
WhileNot Ende%
WaitInput
If @MenuItem(108)
Einstellungen
Endif
If @MenuItem(109)
thread.stopall
Ende% = 1
Endif
Wend
End
-Proc Einstellungen
Proc Einstellungen
Declare hD%, hA%, hB%, OK%, hTime%
Declare hF1%, hT1%
Clear OK%
Dialogfenster erzeugen
hD% = @Create("Dialog",%hWnd,"Einstellungen",%WinLeft+80,%WinTop+155,230,190)
hF1% = @Create("Font","Arial",16,0,0,0,0)
hT1% = @Create("Text",hD%,"Einstellungen...",10,10,220,20)
SetFont hT1%,hF1%
hTime% = @Create("TimeEdit", hD%, "00:00:00", 10, 35, 70, 24)
hB% = @Create("Button",hD%,"&Nachstellen",10,120,100,28)
hA% = @Create("Button",hD%,"&Abbrechen",120,120,100,28)
WhileNot Ok%
WaitInput
If @ButtonClicked(hB%) Nachstellen
Ok% = 1
Aktionen hier
ElseIf @ButtonClicked(hA%) Abbrechen
Ok% = 1
ElseIf (%Key = 2) ALT+F4 bzw. schließen
Ok% = 1
EndIf
EndWhile
DeleteObject hF1%
@DestroyWindow(hD%)
EndProc
-Prozedur die in bestimmten Zeitintervallen ausgefuehrt wird (4x pro Sekunde)
Proc thread.do
parameters n&
Dim Test#,1000000
Inc Timer_Busy%
Locate 5,5
Print "Timer:" + @str$(Timer_Busy%) + " Durchläufe"
Settext T_Text&,"Timer:" + @str$(Timer_Busy%) + " Durchläufe"
ENDPROC
Auch hier se el Ventana no correcto adecuado! Was bedeutet el? Werden en el Hauptprogramm während un hilo ausgeführt, überschreibt Profano intern gespeicherte Variables para Aufrufen de API. Je después de, welche Profanfunktionen en el Hauptprogramm verwendet voluntad, Es el Gefahr veces mehr y veces weniger gegeben, ellos es aber auch (laut Roland) beim direkten Aufrufen de APIs disponible. Wann y si una Fehler auftritt, hängt vom gewählten Zeitintervall, vom Rechner y de el Programmbedienung por el User de. Was bedeutet el genau?
Ein Ejemplo: Beim una Rechner bajo Windows2000 se beim Aufruf el API RegUnloadKey una solcher Crash verursacht y el API se deshalb no korrekt ausgeführt. Daraufhin se el Registryhive des User no como geplant entladen y es beim nächsten Start no mehr verfügbar => una ganzes Userprofile es unwiederbringlich perdido.
Ein anders Ejemplo: Das Hauptprogramm schreibt während una Callback se ejecuta en el Registry. Como alles ungünstig zusammentrifft, se en una otro Schlüssel geschrieben y Datenj en el Registry ir perdido!
Weitere Fragen y Anmerkungen? |
|
|
| |
|
|
| |
|
- Página 2 - |
|
|
| ¡Hola IF...
Mir ebenfalls - antes diesem schönen Ver código fuente podría Yo desafortunadamente el Grund no encontrar. ¿Puede du dir ahora vorstellen, por qué Yo necesariamente wissen quería, si du Temporizador en el PCU verwendest? Einen Hilo sería Yo sólo stoppen, si él no mehr gebraucht se => kann fatal voluntad!
Saludo
AH |
|
|
| |
|
|
|
| Nein kann Yo no wirklich especialmente el Temporizador hierbei Nebensache es si tatsächlich todos Dinge betrifft welche con procaddr zutun haben. Como son Temporizador wohl más en el Minderheit si yo bedenke como oft una wProc angecallt se...
Yo voluntad sagen, incluso si yo ahora en el DLL - veces angenommen - selber el Tiempo rechnen sería y en lugar de encima una Temporizador una Call en el ProcAddr mache - entonces wäre lo ebenso schlimm! Das Problema incluso ha also no vordergründig con el Timern a tun.
Un Save-Variante wäre lo natürlich simplemente una Message a hwnd a senden si una Event passieren se. Das wiederum sería aber desafortunadamente el Struktur ändern. |
|
|
| |
|
|
|
| Auch a dich: Lese dir genau por, Yo escribir. Das Problema ha meiner Meinung después de nichts con otro Callbacks a tun! |
|
|
| |
|
|
|
| Yo lese el Postings aller Miembros igualgenau por.
Mir fehlt aber para Su letzte Behauptung una Begründung... |
|
|
| |
|
|
|
| WM_TIMER se en Angabe uno Adresse no necesariamente de el WndProc bearbeitet, el es el Diferencia. |
|
|
| |
|
|
|
| El Shatter Attack nutzt el - Yo búsqueda igual veces el Artikel... |
|
|
| |
|
|
|
| [quote:bf2faa3b30]WM_TIMER se en Angabe uno Adresse no necesariamente de el WndProc bearbeitet, el es el Diferencia.[/quote:bf2faa3b30] Hm sei No böse pero yo finde el irreführend.
Yo voluntad sagen, incluso si yo ahora en el DLL - veces angenommen - selber el Tiempo rechnen sería y en lugar de encima una Temporizador una Call en el ProcAddr mache - entonces wäre lo ebenso schlimm! Das Problema incluso ha also no vordergründig con el Timern a tun y no así - si wm_timer de el wndproc erfasst se - especialmente unklar es inwiefern Rolands wndProc entonces wiederum weiterhandelt...
Aber Yo glaube hier kann uns sólo Roland helfen... |
|
|
| |
|
|
|
| EasyVent.Dll - selbe Problema... insgesammt aber sicherlich no unschlecht el el Thema angesprochen es - lo brennt auch me ya largo en el Seele - packen wirs also en el Haxen y warten Rolands Statement de... |
|
|
| |
|
|
|
| [quote:ae4c1936c9=iF][quote:ae4c1936c9]WM_TIMER se en Angabe uno Adresse no necesariamente de el WndProc bearbeitet, el es el Diferencia.[/quote:ae4c1936c9] Hm sei No böse pero yo finde el irreführend.
Yo voluntad sagen, incluso si yo ahora en el DLL - veces angenommen - selber el Tiempo rechnen sería y en lugar de encima una Temporizador una Call en el ProcAddr mache - entonces wäre lo ebenso schlimm! [/quote:ae4c1936c9] Scon ausprobiert? Yo voluntad hoffen, wir reden no aneinander vorbei...
[quote:ae4c1936c9] If you pass a non-null HWND after the specified interval has passed, a WM_TIMER mensaje is posted to the window and the TIMERPROC parameter is ignored. The other option is passing a null HWND and a valid TIMERPROC address. In this caso, after the specified time has elapsed, the HWND is ignored and the system calls your TIMERPROC function. [/quote:ae4c1936c9] |
|
|
| |
|
|
|
| Kann ya ser el wir aneinander vorbeireden...
tal vez sehen wir el Problematik auch a verschiedenen Stellen...
Spielt sí ningún papel - grundsätzlich es por lo tanto qué passiert si una XProfanprozedur no vom XProfan incluso - pero de außen angerannt se... - el Diener hierzu es procaddr . El Aufdröselung como Roland el realisiert ha kann sólo él uns geben - a dato könnten todos Spekulationen en el Nachhinein nichtig ser. |
|
|
| |
|
|
|
| FALSCH!!!!!!
No por lo tanto de wo ellos angerannt voluntad, pero como y wo ellos posición! Stehen Callbacks außerhalb de Profano, hay no Problemas. Auch en Callbacks innerhalb de Profano dürfte lo wohl sólo en WM_TIMER große Problemas geben (bin me como pero no bastante sicher). |
|
|
| |
|
|
|
| LOL, FALSCH!!! y (bin me como pero no bastante sicher). An el Postings es nichts falso vertrau me.
Nun wart doch veces Rolands Antwort de. |
|
|
| |
|
|