locked
Frage zum Timer RRS feed

  • Frage

  •  

    Hallo. Ich hab eine Frage, was den Timer in VB 08 angeht...

    Und zwar hab ich mir eine kleine Anwendung gebastelt, mit der ich an eine vorgegebene email adresse mails versenden kann... hab da dann meine eingestellt, um damit zu experimentieren, damit keiner zu schaden kommt (außer mir)

     

    und das problem ist folgendes:

    wie kann ich den timer so programmieren, dass er diesen sende-prozess z.b. alle 120 sekunden wiederholt...? ich weiß nur, dass ich 2 buttons brauche - start und stop button. wäre nett, wenn einer von euch dafür einen code hätte, weil das mein erstes mal ist, wo ich mit nem timer arbeite...

     

    wollte aus dem timer eigentlich einen shutdown-countdown machen, der dann ein zeitlimit anzeigt, bis mein pc runterfährt... aber ich frag mich, ob und wie das auch mit anderen prozessen, wie z.b. dateien kopieren/verschieben, nachrichten verschicken, fertigen tastatureingaben oder dem wiederholten öffnen einer datei hinhaut

    Montag, 27. Oktober 2008 11:52

Antworten

  • Der Timer bietet ein Event namens 'Tick'. Dieses wird, nachdem der Timer mit Start() gestartet wurde, in einem festgelegten Intervall ausgelöst. Die Intervalldauer wird über die Eigenschaft 'Interval' festgelegt.

     

    Doppelklicke einfach im Designer auf das Timer- Control, und Visual Studio erstellt dir automatisch einen Eventhandler zum Tick- Ereigniss. In diesen musst du dann deinen Code, etwa zum versenden von Mails, einfügen.

    Montag, 27. Oktober 2008 17:11
  • Nur um das hier sauber zu schließen und nicht weitere "Wiederbelebungsversuche" zu provozieren:

    Es fehlt schlicht die Anweisung: Dim MyMailMessage As New MailMessage() innerhalb des Timer.Tick Ereignisses. Vollständiges Beispiel fürs Archiv:

    Imports System.Net.Mail
    
    Public Class Form1
    
     Private Sub Button1_Click(ByVal sender As System.Object, 
                  ByVal e As System.EventArgs _
                     ) Handles Button1.Click
    
      Timer1.Interval = 120000
      Timer1.Enabled = True
     End Sub
    
     Private Sub Button2_Click(ByVal sender As System.Object, _
                  ByVal e As System.EventArgs _
                     ) Handles Button2.Click
    
      Timer1.Enabled = False
    
     End Sub
    
     Private Sub Timer1_Tick(ByVal sender As System.Object, _
                 ByVal e As System.EventArgs _
                    ) Handles Timer1.Tick
    
      Dim MyMailMessage As New MailMessage()
    
      MyMailMessage.From = New MailAddress("sender@example.org")
      MyMailMessage.To.Add("user@example.org")
      MyMailMessage.Subject = TextBox1.Text
      MyMailMessage.Body = TextBox2.Text
    
      Dim SMTP As New SmtpClient("smtp.example.org")
    
      SMTP.Port = 587
      SMTP.EnableSsl = True
      SMTP.Credentials = New System.Net.NetworkCredential("account", "password")
    
      SMTP.Send(MyMailMessage)
    
      TextBox2.Text = ""
     End Sub
    
    End Class
    

    Thorsten Dörfler
    Microsoft MVP Visual Basic
    vb-faq.de
    Dienstag, 13. Juli 2010 09:49

Alle Antworten

  • Der Timer bietet ein Event namens 'Tick'. Dieses wird, nachdem der Timer mit Start() gestartet wurde, in einem festgelegten Intervall ausgelöst. Die Intervalldauer wird über die Eigenschaft 'Interval' festgelegt.

     

    Doppelklicke einfach im Designer auf das Timer- Control, und Visual Studio erstellt dir automatisch einen Eventhandler zum Tick- Ereigniss. In diesen musst du dann deinen Code, etwa zum versenden von Mails, einfügen.

    Montag, 27. Oktober 2008 17:11
  • soweit war ich auch schon, mit dem einfügen...

     

    aber das problem ist dieses:

    der startet das debugging nicht, weil der mymailmessage und mailaddress nicht deklarieren konnte... ich weiß nur, wie ich diese sende-funktion so einbaue, dass die anwendung durch klick auf einen button dann den befehl einmal ausführt... aber leider nicht, wie das letztendlich mit einem timer hinhauen soll...

    hier mein code:

     

    Imports System.Net.Mail

    Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    Timer1.Enabled = True

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

    Timer1.Enabled = False

    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

    MyMailMessage.From = New MailAddress("example@gmail.com") 'from-E-Mail Adress"

    MyMailMessage.To.Add("nin.jutsu@hotmail.de") 'your e-mail adress here "to-E-Mail Adress"

    MyMailMessage.Subject = TextBox1.Text

    MyMailMessage.Body = TextBox2.Text

    Dim SMTP As New SmtpClient("smtp.gmail.com")

    SMTP.Port = 587

    SMTP.EnableSsl = True

    SMTP.Credentials = New System.Net.NetworkCredential("example.visualbasic2008@gmail.com", "example123") '"From E-Mail Adress Username and Password

    SMTP.Send(MyMailMessage)

    TextBox2.Text = ""

    End Sub

    End Class

     

    ich dachte, da das ja im grunde der gleiche befehl ist und der timer so gesehen nur eine art abspiel-funktion darstellt, könnte ich einfach den code einfügen und das ganze dann starten... aber der hat leider nichts anrichten können...

    Montag, 27. Oktober 2008 21:16
  • auf Timer eigenschaften auf Interval und dort 120000 eingeben

    das sind 2 Minuten

    dasheist das Tik event wird alle 2Minuten ausgefürt

    Dienstag, 13. Juli 2010 09:21
  • Nur um das hier sauber zu schließen und nicht weitere "Wiederbelebungsversuche" zu provozieren:

    Es fehlt schlicht die Anweisung: Dim MyMailMessage As New MailMessage() innerhalb des Timer.Tick Ereignisses. Vollständiges Beispiel fürs Archiv:

    Imports System.Net.Mail
    
    Public Class Form1
    
     Private Sub Button1_Click(ByVal sender As System.Object, 
                  ByVal e As System.EventArgs _
                     ) Handles Button1.Click
    
      Timer1.Interval = 120000
      Timer1.Enabled = True
     End Sub
    
     Private Sub Button2_Click(ByVal sender As System.Object, _
                  ByVal e As System.EventArgs _
                     ) Handles Button2.Click
    
      Timer1.Enabled = False
    
     End Sub
    
     Private Sub Timer1_Tick(ByVal sender As System.Object, _
                 ByVal e As System.EventArgs _
                    ) Handles Timer1.Tick
    
      Dim MyMailMessage As New MailMessage()
    
      MyMailMessage.From = New MailAddress("sender@example.org")
      MyMailMessage.To.Add("user@example.org")
      MyMailMessage.Subject = TextBox1.Text
      MyMailMessage.Body = TextBox2.Text
    
      Dim SMTP As New SmtpClient("smtp.example.org")
    
      SMTP.Port = 587
      SMTP.EnableSsl = True
      SMTP.Credentials = New System.Net.NetworkCredential("account", "password")
    
      SMTP.Send(MyMailMessage)
    
      TextBox2.Text = ""
     End Sub
    
    End Class
    

    Thorsten Dörfler
    Microsoft MVP Visual Basic
    vb-faq.de
    Dienstag, 13. Juli 2010 09:49