Mit Timer auf veränderten Text prüfen

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von yonda.

    Mit Timer auf veränderten Text prüfen

    Hallo Leute,

    um meine Programmierkenntnisse zu erweitern, versuch ich immer komplexere Sachen zu schreiben.
    In den ganzen Foren gibt es eine Funktion, mit der man Threads abbonieren kann.
    So etwas ähnliches versuche ich zu schreiben.
    Klappt auch bisher ganz gut. Mein Programm kontrolliert jede 10 Minuten, ob der erste Thread aktualisiert ist.
    Als kleine Spielerei habe ich das Programm in den Tray geschickt und es soll eine Benachrichtigung kommen.
    Soweit klappt auch alles ganz gut, aber mit dem Timer klappt es noch nicht.

    Wie gesagt, soll alle 10 Minuten einmal gecheckt werden und eine Benachrichtigung soll nur kommen, wenn auch ein anderer Thread an erster stelle ist(oder wenn ein neuer Beitrag im Thread vorhanden ist)

    Hier einige Codestellen:

    VB.NET-Quellcode

    1. If LastThread <> LastThreadDavor Then
    2. Dim nv As New NameValueCollection
    3. nv.Add("LastThread", "[ " & LastThread & " ] - [ " & LastTime & " ]")
    4. Client.UploadValues("http://meineseite.de/write.php", "POST", nv)
    5. Notify()
    6. End If

    Erklärung, was hier passieren soll: die Threads speichere ich alle per FTP auf meinem Server, klappt wunderbar. Immer, wenn ein Thread anders ist, als der auf dem Sever, soll überschrieben werden.
    Mit Notify() ruf ich die Funktion auf, mit der ich die Benachrichtigung erzeuge.

    VB.NET-Quellcode

    1. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    2. Checker.Interval = 60000 * 10
    3. Checker.Start()
    4. Abrufen()
    5. End Sub


    Abrufen ist die Funktion, wo ein Teil oben gepostet wurde.

    VB.NET-Quellcode

    1. Private Sub Checker_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Checker.Tick
    2. Abrufen()
    3. End Sub


    und hier soll jede 10 Minuten gecheckt werden, und dementsprechend dann eine Benachrichtigung erscheinen. Die Benachrichtigung erscheint aber alle 10 Minuten, auch wenn nichts neues im Forum vorhanden ist.

    Hat jemand eine Idee?
    Ich hoff, ist nicht zu viel geschrieben und man versteht, was ich möchte :)

    Gruß,
    kaktus
    Offenstichtlich ist der Vergleich Fehlerhaft.
    Wie genau vergleichst du denn die Threads auf Gleichheit ?
    Was genau ist:

    If LastThread <> LastThreadDavor

    Offensichtlich ist LastThread <> LastThreadDavor und deshalb wirst du benachrichtigt.
    Um dir helfen zu können wäre es interessant wie du die beiden Variablen befüllst etc.
    Das ist meine Signatur und sie wird wunderbar sein!
    Hallo!

    VB.NET-Quellcode

    1. Private Client As WebClient = New Net.WebClient()
    2. Private LastThreadDavor As String = Client.DownloadString("http://meineseite.de/mario/MyWert.txt")

    LastThreadDavor ist somit der auf dem Server gespeicherte Wert.
    LastThread ist dann der erste Thread auf dem Forum.

    Nehmen wir folgendes an:

    Thread heißt: "offtopic - heute ist ein schöner tag"
    dann wird auf dem Server "offtopic - heute ist ein schöner tag" gespeichert.
    Nun wird der Wert verglichen. Dachte mir halt, wenn der Thread jetzt heißt "Was schaust du grad", ist es ungleich dem Wert auf dem Server und wird daher überschrieben.

    Danke!
    Danke yonda für die Idee. Die Idee war recht simple, aber ich kam nicht dahinter :D
    Habe if not t = tdavor then benutzt.

    Habe nicht beachtet, dass der Wert vom Server ebenfalls im Timer aktualisiert werden muss. Logischer Fehler also.
    Nun funktioniert das Programm, so wie es soll :)