Avatar billede bac Nybegynder
15. september 2009 - 23:13 Der er 8 kommentarer

Opdatere et text field med en tråd

Hejsa eksperter

Jeg vil gerne prøve at opdatere et textfelt med Datetime metoden med en tråd således at den opdaterer hvert sekund, jeg ved ikke hvordan jeg sender igang med at opdatere konstant og ikke kun engang, her er koden.

protected void Button3_Click(object sender, EventArgs e)
        {
          {
            ThreadStart(Thread2));
                traad.IsBackground = true;
                traad.Start();
            }
        }

public void Thread2()
        {
                Thread.Sleep(1000);
                opdater();
        }

        public void opdater()
        {
            TextBox1.Text = DateTime.Now.ToString();
           
        }

Hvad skal jeg gøre for at det virker?
Avatar billede bitmatic Nybegynder
15. september 2009 - 23:26 #1
prøv med:

public void Thread2()
{
  while(true)
  {
    Thread.Sleep(1000);
    opdater();
  }
}
Avatar billede arne_v Ekspert
16. september 2009 - 00:05 #2
Et eksmepel fra lageret:

using System;
using System.Drawing;
using System.Windows.Forms;
using System.Threading;

public class MainForm : Form
{
    private Label time;
    private Button start;
    private Button abort;
    private Thread t;
   
    public MainForm()
    {
        time = new Label();
        start = new Button();
        abort = new Button();
        SuspendLayout();
        time.Location = new Point(50, 50);
        time.Size = new Size(300, 50);
        time.Font = new Font(FontFamily.GenericSerif, 16.0f);
        start.Location = new Point(50,150);
        start.Size = new Size(200, 50);
        start.Name = "Start Button";
        start.Text = "Start clock";
        start.Click += new EventHandler(StartClick);
        abort.Location = new Point(50,250);
        abort.Size = new Size(200, 50);
        abort.Name = "Abort Button";
        abort.Text = "Abort clock";
        abort.Click += new EventHandler(AbortClick);
        ClientSize = new Size(400, 350);
        Controls.Add(time);
        Controls.Add(start);
        Controls.Add(abort);
        Name = "Main Form";
        Text = "Main Form";
        ResumeLayout(false);
    }
    public void UpdateTime()
    {
        time.Text = DateTime.Now.ToString();
    }
    public delegate void UpdateTimeHandler();
    public void Run()
    {
        while(true)
        {
            if(time.InvokeRequired)
            {
                time.Invoke(new UpdateTimeHandler(UpdateTime));
            }
            else
            {
                Update();
            }
            Thread.Sleep(1000);
        }
    }
    public void StartClick(object sender, EventArgs e)
    {
        t = new Thread(new ThreadStart(Run));
        t.Start();
    }
    public void AbortClick(object sender, EventArgs e)
    {
        t.Abort();         
    }
    [STAThread]
    public static void Main(string[] args)
    {
        Application.Run(new MainForm());
        Application.Exit();
        Environment.Exit(0);
    }
}
Avatar billede bvli Praktikant
16. september 2009 - 07:51 #3
Lige præcis i dette tilfælde, ville jeg nok vælge ikke at oprette en tråd selv, men bruge en timer i stedet.
Avatar billede bac Nybegynder
16. september 2009 - 13:13 #4
Jeg har prøvet lidt frem og tilbage med kode, og det virker fint i en winform app i VS, men det skal bruges til en webform, og jeg kan ikke bruge metoden " time.Invoke(new UpdateTimeHandler(UpdateTime)), Invoke samt Update();" findes der en omvej?
Avatar billede bac Nybegynder
16. september 2009 - 14:44 #5
Den var til arne_v
Avatar billede arne_v Ekspert
16. september 2009 - 15:41 #6
web form ?

Det er jo noget helt andet !

Formentligt er du saa bedst tjente med at have noget JavaScript koerende client side som refresher.
Avatar billede olmer Nybegynder
17. september 2009 - 14:01 #7
jeg har lavet en javaaplet en gang der kan vise tiden.
her er koden hvis du synes du kan bruge sådan en.

http://www.eksperten.dk/spm/108644#reply_1093129
Avatar billede olmer Nybegynder
17. september 2009 - 14:02 #8
oops det skulle bare have været en kommentar.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester