DFens Geschrieben 12. Dezember 2009 Geschrieben 12. Dezember 2009 Hi, ich habe folgendes Problem: Ich will eine Konsolenanwendung in VB.net programmiereb, in der die Ausgabe console.writeLine("Hello world") sekündlich wiederholt wird. Von den Windows Forms weiß ich, dass man z.B. einen Timer aus der Toolbox nehmen könnte aber der steht einem ja nicht in einer Konsolenanwendung zur Verfügung.... danke für Hilfe im vorraus! Zitieren
.NETter Geschrieben 12. Dezember 2009 Geschrieben 12. Dezember 2009 Hallo, Du kannst den System.Timer nutzen. Code aus der Doku: Imports System Imports System.Timers Public Class Timer1 Private Shared aTimer As System.Timers.Timer Public Shared Sub Main() ' Normally, the timer is declared at the class level, ' so that it stays in scope as long as it is needed. ' If the timer is declared in a long-running method, ' KeepAlive must be used to prevent the JIT compiler ' from allowing aggressive garbage collection to occur ' before the method ends. (See end of method.) 'Dim aTimer As System.Timers.Timer ' Create a timer with a ten second interval. aTimer = New System.Timers.Timer(10000) ' Hook up the Elapsed event for the timer. AddHandler aTimer.Elapsed, AddressOf OnTimedEvent ' Set the Interval to 2 seconds (2000 milliseconds). aTimer.Interval = 2000 aTimer.Enabled = True Console.WriteLine("Press the Enter key to exit the program.") Console.ReadLine() ' If the timer is declared in a long-running method, use ' KeepAlive to prevent garbage collection from occurring ' before the method ends. 'GC.KeepAlive(aTimer) End Sub ' Specify what you want to happen when the Elapsed event is ' raised. Private Shared Sub OnTimedEvent(source As Object, e As ElapsedEventArgs) Console.WriteLine("The Elapsed event was raised at {0}", e.SignalTime) End Sub End Class Gruß, Thomas Zitieren
DFens Geschrieben 12. Dezember 2009 Autor Geschrieben 12. Dezember 2009 (bearbeitet) Da ich noch ein Newbie bin versteh ich daraus leider nicht so viel ... Ich will quasi das hier: Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Timer1.Start() End Sub Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick ausgabe.Text = ausgabe.Text & "Hello world" End Sub Für eine Konsolenanwendung Bearbeitet 12. Dezember 2009 von DFens Zitieren
Argbeil Geschrieben 12. Dezember 2009 Geschrieben 12. Dezember 2009 Hast du noch eine konkrete Frage oder möchtest du dich lieber erstmal mit den Grundlagen beschäftigen? Zitieren
Gateway_man Geschrieben 12. Dezember 2009 Geschrieben 12. Dezember 2009 (bearbeitet) @Argbeil: ich denke er kennt sich noch überhaupt nicht mit solchen dingen aus und ist es gewöhnt alles in den Designer zu ziehen und mit einem Doppelklick in den Quellcode zu kommen. Also sind kommentare durchaus legitim. Ich werd mal'n kommentiertes snippet posten. Du kannst es natürlich auch kürzer schreiben. Das würde dann in etwa so aussehen: Module Module1 WithEvents timer1 As New System.Timers.Timer 'hier wurde der Timer1 as timer deklariert mit allen events die zu dem timer gehören Sub Main() 'in der main Methode wird der timer gestartet timer1.Enabled = True timer1.Start() 'das console.readkey sorgt dafür das sich das fenster nicht direkt nach dem öffnen wieder schließt! Console.ReadKey() End Sub Private Sub timer1_Elapsed(ByVal sender As Object, ByVal e As System.Timers.ElapsedEventArgs) Handles timer1.Elapsed 'das wäre dann das event welches du als tick event des timer kennst. 'Dieser Code wird ausgeführt wenn das Intervall erreicht ist Console.WriteLine("hola hola") End Sub End Module Kleiner Hinweis mitdem du dir die schreibarbeit für das elapsed event sparst. Sobald du den Timer deklariert hast kannst du über die 2 comboboxen, welche direkt über dem Quelltexteditor stehen, den eventtext einfügen. Gehe dazu auf die Combobox die aktuell folgenden Itemtext selektiert hat => (Allgemein) Da müsste ein Eintrag verfügbar sein, der exakt so heißt wie die variable, die du für die deklaration des Timers genutzt hast. Klick darauf. Jetzt geh in die zweite Combobox die rechts daneben positioniert ist. Da ist ein eintrag drin der wie folgt heißt : Elapsed Klick wiederrum auf diesen Eintrag. So jetzt wurde das [Timervariable].Elapsed ereignis, welches du als timertick kennen solltest, in deinem Quellcode hinzugefügt! Lg Gateway Bearbeitet 12. Dezember 2009 von Gateway_man Zitieren
DFens Geschrieben 12. Dezember 2009 Autor Geschrieben 12. Dezember 2009 Super, danke dir Gateway_man . Lagst mit deiner Vermutung genau richtig und das mit den 2 Comboboxen wusste ich auch noch nicht. Schön was dazu gelernt zu haben. Zitieren
Gateway_man Geschrieben 12. Dezember 2009 Geschrieben 12. Dezember 2009 Super, danke dir Gateway_man . Lagst mit deiner Vermutung genau richtig und das mit den 2 Comboboxen wusste ich auch noch nicht. Schön was dazu gelernt zu haben. Kein Thema. Aber Argbeil hat mit der Aussage "Lern erstmal die Grundlagen" vollkommen recht. Hier im NET Forum haben wir eine meines erachtens nach schon recht beachtliche Liste von Tutorials rund um .NET Programmierung. Ich empfehle dir aus eigener Erfahrung folgendes Tutorial mal durchzumachen: Klick mich! Denn wenn du jetzt irgendwo in der Mitte anfängst, ist die warscheinlichkeit sehr sehr groß, das du später überhaupt nichtmehr weiterkommst da dir die Grundlagen fehlen. Ich kenne das aus eigener Erfahrung und weiß, die Versuchung direkt mittendrin anzufangen ist sehr groß. Frei nach den Sprüchen: - "Don't jump the gun" - "Step by Step" Lg Gateway Zitieren
DFens Geschrieben 12. Dezember 2009 Autor Geschrieben 12. Dezember 2009 Danke für den Link, die Openbooks kenne ich, habe allerdings bisher nur dieses Buch durchgearbeitet Einstieg in Visual Basic 2008. Aber werde mich dransetzen auch das andere Buch durchzuarabeiten (sieht deutlich umfangreicher aus ). Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.