02. april 2008 - 20:29Der er
11 kommentarer og 1 løsning
løkke med en timeout
Jeg har følgende løkke i min windows form, hvori jeg gerne vil have en form for timeout, så løkken køres 1 gang i sekundet. Hvorledes kan jeg gøre dette?
for (int i = 1; i<=3; i++) { textBox1.Text = "gør et eller andet hvert sekund"; }
Jeg har desvaerre kun et VB.NET eksempel paa lager, men se om ikke du kan lave det i C#:
Imports System Imports System.Threading
Public Class Form1 Private done As Boolean Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click done = False Dim t As Thread = New Thread(AddressOf TextUpdateThread) t.Start() End Sub Private Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click done = True End Sub Private Sub TextUpdateThread() Dim i As Integer = 0 While Not done i = i + 1 If TextBox1.InvokeRequired Then TextBox1.Invoke(New TextUpdateHandler(AddressOf TextUpdate), New Object() {i}) Else TextUpdate(i) End If Thread.Sleep(1000) End While End Sub Private Delegate Sub TextUpdateHandler(ByVal n As Integer) Private Sub TextUpdate(ByVal n As Integer) TextBox1.Text = n.ToString() End Sub End Class
Ok, smider jeg en Application.DoEvents(); ind i toppen af løkken, så spiller det... Dog fatter jeg ikke at der ikke findes en delay() lignende ting, da Thread.Sleep lammer hele GUI som arne nævner :-(
Jeg har også et Timer eksempel. Og denne gang i C#:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;
namespace E { public partial class Form1 : Form { private Timer t; public Form1() { InitializeComponent(); t = new Timer(); t.Interval = 5000; t.Tick += new EventHandler(t_Tick); } private void button1_Click(object sender, EventArgs e) { label1.Text = "Bøh"; t.Start(); } void t_Tick(object sender, EventArgs e) { label1.Text = ""; t.Stop(); } } }
Jeg takker for hjælpen arne. Jeg fik lavet den med sidstnævnte, selvom det tog lidt tid at brygge den sammen med en loop der køre 3 gange. Smider du ikke et svar til mig?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.