[VB08] Timer Frage | #1 | |
Anmeldungsdatum: Aug 2009 Beiträge: 21 |
Hallo... Hab schon einiges probiert aber ich komm nicht weiter! wie kann ich im folgendem Code ein Timer einbauen? so das er z.b. case 1 oder case 3 immer wieder sendet? Wenn ich F1 Drücke sendet er den Text auch.. aber ich möchte F1 drücken und dann sendet er alle 30Sek. den Text aus der Textbox... TEXT Code:
|
|
EliteHaX ist offline |
// < ------------------------------------------------- > // < XLib.Timer.cs / C#.Net / 18.03.2007 / ZeRoKiLLeR > // < ------------------------------------------------- > using System; using System.Threading; namespace XLib { public class Timer { /// <summary> /// Duration in ms /// </summary> private Double m_Duration; /// <summary> /// Time left in ms /// </summary> private Double m_TimeLeft; /// <summary> /// Target method/function after timer finished /// </summary> private TargetFunction m_Target; /// <summary> /// Tick thread /// </summary> private Thread m_TickThread; /// <summary> /// State if timer is running /// </summary> private Boolean m_Running; /// <summary> /// Creates a new timer instance /// </summary> /// <param name="duration">Duration in ms</param> /// <param name="target">Target method/function</param> public Timer(Double duration, TargetFunction target) { try { // Set values this.m_Duration = duration; this.m_TimeLeft = 0; this.m_Target = target; this.m_TickThread = null; this.m_Running = false; } catch (Exception exc) { // Handle Errors here } } /// <summary> /// Starts the timer /// </summary> public void Start() { try { // If timer is not running if (!this.m_Running) { this.m_TickThread = new Thread(new ThreadStart(this.Tick)); this.m_TickThread.Name = "XLib.Timer | Tick-Thread"; this.m_TickThread.Start(); this.m_Running = true; } } catch (Exception exc) { // Handle Errors here } } /// <summary> /// Stopps the timer /// </summary> public void Stop() { try { // If timer is running if (this.m_Running) { // this.m_TickThread.Abort(); -> Throw exception "AbortException" ... this.m_Running = false; // <- FIX } } catch (Exception exc) { // Handle Errors here } } /// <summary> /// Pause the imer /// </summary> public void Pause() { try { // If timer is running if (this.m_Running) { this.m_Running = false; } } catch (Exception exc) { // Handle Errors here } } /// <summary> /// Tick method /// </summary> private void Tick() { try { // Endless loop while (true) { // If timer is running if (this.m_Running) { if (this.m_TimeLeft < this.m_Duration) { this.m_TimeLeft += 100; } else { this.m_Target.Invoke(); this.m_Running = false; } } // Pause thread for 100ms Thread.Sleep(TimeSpan.FromMilliseconds(100)); } } catch (Exception exc) { // Handle Errors here } } public delegate void TargetFunction(); } }