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"; }
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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.