Code alle X Sekunden ausführen - C#?

2 Antworten

Da bräuchtest Du einen Timer. Da gibt's verschiedene von. Einmal den Standard Windows Forms Timer (der wird ggf. nicht ausgeführt, wenn das UI blockiert ist) oder den System.Threading.Timer oder den System.Timers.Timer (normalerweise nehme ich letzteren).

Diesen musst Du mit einer Anzahl Millisekunden initialisieren. Dann wird nach Ablauf dieser Zeit ein Event ausgelöst. In diesem Event kannst Du machen, was Du willst.

nutze einen Timer. Zieh ihn aus der Toolbox auf's Form.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            timer1.Start();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            timer1.Stop();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            MessageBox.Show("Test", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
    }
}

Bild zum Beitrag

Bild zum Beitrag

Woher ich das weiß:eigene Erfahrung
 - (Computer, programmieren, C Sharp)  - (Computer, programmieren, C Sharp)

mprex 
Fragesteller
 26.02.2021, 13:23

Und wann führt der Timer dass dan aus? (also wie oft und so)

0
Bartosz11  26.02.2021, 13:24
@mprex

Im ersten Bild siehst du rechts die Eigenschaften. Ich habe das Intervall auf 5000 Millisekunden gestellt. Also alle 5 Sekunden ;)

0
mprex 
Fragesteller
 26.02.2021, 13:28
@mprex

Hab es jetzt so gemacht, es hat die Uhrzeit (die angezeigt wird) aber nicht aktualliesiert:

private void timer1_Tick(object sender, EventArgs e)
        {
            bunifuCustomLabel1.Text = DateTime.Now.ToString("dd.MM.yyyy");
            bunifuCustomLabel2.Text = DateTime.Now.ToString("HH:mm");
        }
0
mprex 
Fragesteller
 26.02.2021, 13:34
@mprex

Ah ich weis jetzt woran es liegt ich habe den Timer noch nicht bei "enabled" auf "true" gesetzt

0
Bartosz11  26.02.2021, 13:34
@mprex

Versuchs mal so.

private void timer1_Tick(object sender, EventArgs e)
        {
            label1.Text = System.DateTime.Now.ToString();
            label1.Update();
        }

Je nachdem, wie schnell dein Timer läuft, kommt die Form nicht mit aktualisieren hinterher. Deswegen label1.Update()

0