Procedure Regelmäßig ausfühen

Anfängerfragen zum Programmieren mit PureBasic.
Rene-RNI
Beiträge: 18
Registriert: 10.09.2013 14:32

Procedure Regelmäßig ausfühen

Beitrag von Rene-RNI »

Hallo,

Ich suche eine möglichkeit eine Procedur alle 20 Sekunden auführen zu lassen.

in der Wartezeit soll aber Systray Menue weiterhin funktionieren und die Schleife unterbrechen zu können.

WIe kann ich so etwas machen?

Danke Euch schon mal

Gruß Rene
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Procedure Regelmäßig ausfühen

Beitrag von RSBasic »

Kommt drauf an, was deine Prozedur machen soll. Du kannst das mit Hilfe eines Timers machen oder in einem Thread.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Rene-RNI
Beiträge: 18
Registriert: 10.09.2013 14:32

Re: Procedure Regelmäßig ausfühen

Beitrag von Rene-RNI »

Die Procedur öffnet eine Daten bank ließt sie aus und gibt die einzelnen Datensätze über einen Bondrucker aus

An einen Thread habe ich auch schon gedacht, aber habe es nicht hinbekommen

So viel ich gesehen habe muss ich alle Variablen die benötigt werden mit übergeben.

Das wären ne ganze menge
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Procedure Regelmäßig ausfühen

Beitrag von ts-soft »

Thread ist nicht notwendig:

Code: Alles auswählen

EnableExplicit

Procedure Alle20Sek()
  Debug "Schon wieder 20 Sekunden um!"
EndProcedure

Define img = LoadImage(#PB_Any, #PB_Compiler_Home + "Examples\Sources\Data\CdPlayer.ico")

OpenWindow(0, 0, 0, 0, 0, "", #PB_Window_Invisible)

AddSysTrayIcon(1, WindowID(0), ImageID(img))
AddWindowTimer(0, 1, 20000)
BindEvent(#PB_Event_Timer, @Alle20Sek(), 0, 1)

If CreatePopupMenu(0)      ; hier beginnt das Erstellen des Popup-Menüs...
  MenuItem(1, "Open")      ; Sie können alle Befehle zum Erstellen eines Menüs
  MenuItem(2, "Save")      ; verwenden, ganz wie bei einem normalen Menü...
  MenuItem(3, "Save as")
  MenuItem(4, "Quit")
  MenuBar()
  OpenSubMenu("Recent files")
  MenuItem(5, "PureBasic.exe")
  MenuItem(6, "Test.txt")
  CloseSubMenu()
EndIf

Repeat
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow
      Break
    Case #PB_Event_SysTray
      Select EventType()
        Case #PB_EventType_LeftClick
          DisplayPopupMenu(0, WindowID(0))
      EndSelect
    Case #PB_Event_Menu
      Select EventMenu()
        Case 1
          Debug "Open"
        ; ....
      EndSelect
  EndSelect
ForEver
Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Rene-RNI
Beiträge: 18
Registriert: 10.09.2013 14:32

Re: Procedure Regelmäßig ausfühen

Beitrag von Rene-RNI »

Danke dir, habe jetzt doch noch mal mit Thread rum,gespielt und es Funktioniert
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Procedure Regelmäßig ausfühen

Beitrag von ts-soft »

Rene-RNI hat geschrieben:Danke dir, habe jetzt doch noch mal mit Thread rum,gespielt und es Funktioniert
Naja, mit Thread und Threadsicherheit ist es so eine Sache, in der kurzen Zeit wirste das nicht testen können,
die Fehler treten oft erst nach Stunden laufzeit auf. Da Du noch beim programmieren Deiner Anwendung bist,
können noch viele Sachen dazu kommen, die Threads veranlassen ungewollte Effekte zu haben.

Solange es ohne Threads geht, nutze es lieber ohne Threads! Erst wenn Deine GUI stockt, könnten Threads
sinnvoll sein, solange dies nicht der Fall ist, wird das Programm eher langsamer durch Threads (Threadsicherheit
aktiviert) und Fehleranfälliger.

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
GronkhLP
Beiträge: 72
Registriert: 14.11.2013 22:43
Wohnort: Köln
Kontaktdaten:

Re: Procedure Regelmäßig ausfühen

Beitrag von GronkhLP »

ts-soft hat geschrieben:mit Thread und Threadsicherheit ist es so eine Sache ... die Fehler treten oft erst nach Stunden laufzeit auf. ... die Threads veranlassen ungewollte Effekte zu haben ... und Fehleranfälliger.
Wer sagt das? Du? Dann machst du was falsch! Ich habe jahrelange Erfahrungen in Anwendungsentwicklung mit Aufgabenverteilung bei grösseren Programmen und kein meiner Programme ist jemals durch Threads abgestürzt oder hat aussergewöhnliche Bugs bei Langlaufzeiten! Wenn man gewisse Dinge falsch macht, wie das zugreifen auf globalen gemeinsamen Variablen oder Gadgets, dann können ungewöhnliche Fehler auftreten, aber man muss auch sauber und bedacht programmieren und wenn man es richtig umsetzt, dann passieren auch solche Anfängerfehler nicht. Es hat aber nichts mit Threads zu tun, sondern mit der eigentlichen Codestrukturierung und der Codesauberkeit ebenso der Umsetzung. Es können auch Bugs mit Addwindowtimer entstehen, wenn du einen schmutzigen Code hinzauberst. Schau mal die professionellen Programmen an. Die grösseren Programmen verwenden aufgrund der Komplexität Threads, um Aufgaben gezielt zu verteilen und sie sind nicht automatisch buggy, weil Threads verwendet werden. Wenn einer Variablen nicht sauber deklariert sind die Variablen schuld daran? Falls deine Programme andauernd abstürzen, dann verallgemeine bitte nicht gleich, weil es sich laut deiner Argumentation anhört, dass Threads immer buggy sind was nicht stimmt, sonst müsste alles komplett abstürzen, aber das tut es nicht. :D
Oder ich mach was falsch und meine Programme laufen zu gut mit Threads. :D
Bild
NeoChris
Beiträge: 205
Registriert: 21.11.2013 21:17
Wohnort: Schweiz
Kontaktdaten:

Re: Procedure Regelmäßig ausfühen

Beitrag von NeoChris »

Da muss ich Gronkh zustimmen. Ich habe auch keine Thread probleme und komme auch so gut klar. Ich habe im Hintergrund ein Program von mir laufen und es läuft und läuft. ;)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Procedure Regelmäßig ausfühen

Beitrag von ts-soft »

Falls Ihr es nicht bemerkt habt, wir sind hier im Anfängerforum! Anfänger und Threads geht meistens schief, egal ob bei euch alles glatt geht.
Threads werden in diesem Unterforum nur empfohlen, wenn es nicht anders zu lösen ist.

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Chimorin
Beiträge: 451
Registriert: 30.01.2013 16:11
Computerausstattung: MSI GTX 660 OC mit TwinFrozr III
6Gb DDR 3 RAM
AMD Phenom II X4 B55 @ 3,6GHz
Windows 7 Home Premium 64-bit

Re: Procedure Regelmäßig ausfühen

Beitrag von Chimorin »

Das stimmt auch. Ich glaube nicht, dass sich ein waschechter Anfänger gleich mit Semaphoren und Mutexen rumplagen sollte. Geschweige denn, dass es am Anfang wichtig wäre, sich mit Threads zu beschäftigen :?
Bild

- formerly known as Bananenfreak -
Antworten