Español
Foro

Gefahr schlimmer Crashes ca. ProcAddr en Callbacks, Hilos

 
- 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?
 
09.09.2006  
 



 
- 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
 
09.09.2006  
 



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.
 
09.09.2006  
 



Auch a dich: Lese dir genau por, Yo escribir. Das Problema ha meiner Meinung después de nichts con otro Callbacks a tun!
 
09.09.2006  
 



Yo lese el Postings aller Miembros igualgenau por.

Mir fehlt aber para Su letzte Behauptung una Begründung...
 
09.09.2006  
 



WM_TIMER se en Angabe uno Adresse no necesariamente de el WndProc bearbeitet, el es el Diferencia.
 
09.09.2006  
 



El Shatter Attack nutzt el - Yo búsqueda igual veces el Artikel...
 
09.09.2006  
 



[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...
 
09.09.2006  
 



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...
 
09.09.2006  
 



[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]
 
09.09.2006  
 



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.
 
09.09.2006  
 



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).
 
09.09.2006  
 



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.
 
09.09.2006  
 




Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

4.215 Views

Untitledvor 0 min.
H.Brill26.01.2023
Peter Max Müller13.11.2017
iF19.07.2015
Ernst02.03.2015

Themeninformationen



Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie