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?
Annonceindlæg fra Infor
15. september 2009 - 23:26
#1
prøv med: public void Thread2() { while(true) { Thread.Sleep(1000); opdater(); } }
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); } }
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.
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?
16. september 2009 - 14:44
#5
Den var til arne_v
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.
17. september 2009 - 14:02
#8
oops det skulle bare have været en kommentar.
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.