002
05.01.2006, 21:32 Uhr
Uwe
C/C++ Master (Administrator)
|
Hallo Dark Listener, OK, hatte vorhin nicht viel Zeit. Noch ein Bsp.: - 1 Label - 1 TextBox - 1 Button In der Textbox wird der Sekundenwert eingegeben, wielange der Timer aktiv sein soll Form1
C++: |
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Threading;
namespace ThreadRun { public partial class Form1 : Form { public Form1() { InitializeComponent(); }
public void UpdateLabel() { label1.BackColor = Color.Azure; }
public void UpdateThis() { this.Width += 10; }
private void button1_Click(object sender, EventArgs e) { int timeToRun = Int32.Parse(textBox1.Text); RunMyThread tr = new RunMyThread(this, timeToRun); Thread t = new Thread(new ThreadStart(tr.Start)); t.Start(); } } }
|
Klasse RunMyThread
C++: |
using System; using System.Collections.Generic; using System.Text; using System.Threading; using System.Windows.Forms; namespace ThreadRun { class RunMyThread { private Form1 frm; private int wait; private System.Threading.Timer timer;
public RunMyThread(Form1 frmMain, int waitSecond) { frm = frmMain; wait = waitSecond; } public void Start() { timer = new System.Threading.Timer(new TimerCallback(this.TimerElapsed), null, 1000, 1000); while (timer != null) Thread.Sleep(0); } private void TimerElapsed(object o) { wait--; frm.Invoke(new MethodInvoker(frm.UpdateThis)); if (wait <= 0) { frm.Invoke(new MethodInvoker(frm.UpdateLabel)); timer.Dispose(); timer = null; } } } }
|
Ohne Fehlerbehandlung! -- "Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."
Bis dann... Uwe Dieser Post wurde am 05.01.2006 um 21:44 Uhr von Uwe editiert. |