none
Zwei Timer oder besser alles in einem ?

    Frage

  • Hallo,

    ich müsste die von meinem Programm verwendete Datenbank einmal die Woche aufräumen und anschließend komprimieren. Das klappt alles, wenn ich es am Anfang des Programms tue. Solange die Tabellen benutzt werden, geht das natürlich nicht.

    Also denke ich, die Benutzer meines Programms (das letztendlich wahrscheinlich tag und nacht durchläuft, einmal die Woche Dienstags gegen Mittag darum zu bitten, es zu schließen und neu zu starten, so dass die Komprimierung stattfinden kann.

    ich tue das mit einem neuen Timer2 der alle Stunde mal nachguckt, ob Dienstag mittag ist. Oder sollte ich dabei einen bestehenden Timer1verwenden, der alle Sekunde die Zeit in einem Label updatet.

    Also eigentliche Grundsatzfrage: sind zwei Timer verbrauchsintensiver (weil der Timer ja intern auch jede millisekunde nachgucken muss, ob er "Dran" ist) oder einer? Wird bei diesen zwei unmerkbar sein, aber vielleicht habe ich ich ja noch mehr Timerbedarf ...

    Gruß
    Thomas
    vb.net 2012

    Samstag, 26. Januar 2013 13:06

Antworten

  • Hallo Thomas,

    wenn deinerseits für das Schließen und erneute öffnen von Verbindungen zu viel Aufwand entsteht, hast Du irgendwas grundlegendes falsch gemacht.

    Lager den Code für das öffnen und schließen der Verbindungen in zwei Methoden aus und ruf diese dann auf. Wo da nun das Problem liegen soll, versteh ich nicht ganz.

    Zu deiner Ursprungsfrage: Wenn Du einen Timer hast, der jede Sekunde etwas aktualisiert, brauchst Du IMHO keinen zweiten, der alle halbe Stunde läuft. Es gibt sicher Ausnahmen, das, was Du da machst, gehört aber IMO nicht dazu.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Samstag, 26. Januar 2013 19:52

Alle Antworten

  • Hallo Thomas,

    um welches Datenbanksystem geht es hier? Access? SQL Server? ...?

    Wenn Access oder ähnliches, wird dieselbe Datenbankdatei von mehreren Leuten gleichzeitig verwendet?

    Warum Dienstag Mittag? Samstag auf Sonntag Nacht würde sich in der Regel eher anbieten, es sei, denn, dass dann gerade "Hochsaison" ist :) Ansonsten halt auf eine Zeit ausweichen, in der man davon ausgehen kann, dass keiner da ist. Denn dann kannst Du die Verbindungen auch gegen den Willen des Anwenders schließen (er ist ja nicht da, um sich zu wehren :)


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Samstag, 26. Januar 2013 13:59
  • Hallo Stefan,

    danke für die Antwort.

    es ist eine Access-DB. Im Moment erst mal nur 1 Verbindung. Ich bin froh, dass ich die Verbindungen zustandegebracht habe, beim ersten "größeren" Versuch einer Anwendung mit vb.net. Ich müsste die ganze Anwendung stoppen, weil die permanent Daten aus TCP-verbindungen liest und in die Datenbank schreibt. Und dann noch die ganzen Verbindungen trennen. Das wollte ich mir nicht antun.

    Denn das Stoppen und Neustarten dauert auch nicht lange. Der Aufwand für das Beenden usw. ist im Verhältnis dazu glaube ich zu hoch.

    Mir ging es nur um diese wahrscheinlich völlig unwichtige Frage mit den Timern.

    Wenn ich mehrere Verbindungen habe, werde ich das auf die Nacht verlegen und vielleicht die Anwendung automatisch stoppen und wieder starten lassen.

    Gruß
    Thomas

    Samstag, 26. Januar 2013 15:05
  • Hallo Thomas,

    wenn deinerseits für das Schließen und erneute öffnen von Verbindungen zu viel Aufwand entsteht, hast Du irgendwas grundlegendes falsch gemacht.

    Lager den Code für das öffnen und schließen der Verbindungen in zwei Methoden aus und ruf diese dann auf. Wo da nun das Problem liegen soll, versteh ich nicht ganz.

    Zu deiner Ursprungsfrage: Wenn Du einen Timer hast, der jede Sekunde etwas aktualisiert, brauchst Du IMHO keinen zweiten, der alle halbe Stunde läuft. Es gibt sicher Ausnahmen, das, was Du da machst, gehört aber IMO nicht dazu.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Samstag, 26. Januar 2013 19:52
  • hast Du irgendwas grundlegendes falsch gemacht.

    Lager den Code für das öffnen und schließen der Verbindungen in zwei Methoden aus und ruf diese dann auf. Wo da nun das Problem liegen soll, versteh ich nicht ganz. 

    Nein, ich hatte nur keine Ahnung, wo ich da anfangen sollte und wo die eigentliche Verbindung steckt. Aber es gab gar keine, die ganzen Datagridviews basieren ja auf den Datasets und ich muss die Tabellen ja ausdrücklich aktualisieren. Aber in Wirklichkeit hatte ich eine Connection aufgemacht, um sie nicht jede Sekunde zum Nachsehen neu zu öffnen. Die hatte ich ganz vergessen.

    Danke für den Anstupser, das dann doch ganz richtig zu machen.

    Gruß
    Thomas

    Samstag, 26. Januar 2013 22:22