2017-01-12 2 views
0

Mein Timer wird nicht ankreuzen, ich habe mit dem Drucken versucht zu überprüfen, ob der Timer gestartet ist, es startet, aber es tickt nie. Hier ist der Code:Mein Timer wird nicht ankreuzen C#

public Form1() 
    { 
     InitializeComponent(); 
     this.DoubleBuffered = true; 
     timer = new Timer(); 
     timer.Enabled = true; 
     timer.Interval = 50; 
     timer.Tick += new EventHandler(timer_Tick); 
     //Console.WriteLine("STARTING TIMER"); 
     timer.Start(); 
     NewFile(); 

    } 

    private void timer_Tick(object sender, EventArgs e) 
    { 
     MessageBox.Show("TIMER TICKS"); 

     doc.MoveBalls(leftX, topY, width, height); 
     doc.CheckCollision(); 
     Invalidate(true); 

     Console.WriteLine("Moving2"); 
    } 
+0

Welche .NET-Framework verwenden Sie? Welchen Timer verwendest du (Namensraum)? –

+0

@JuanIgnacioCornet System.Windows.Forms; – andonova

Antwort

1

Neben den Antworten arbeiten, können Sie auch einen Thread von Timer verwenden, das Objekt Rückruf und einen Zustand nimmt wie Ihr Arbeitsfaden sicher zu halten unten

Nachdem Sie umfassen die Bibliothek vor Ihrem Namensraum

using System.Threading; 

// Ihren Namensraum

 private readonly TimeSpan _updateInterval = TimeSpan.FromSeconds(10); 

     private Timer _timer = new Timer(CallBakFunction, null, _updateInterval, _updateInterval); 
     private void CallBakFunction(object state) 
     { 

     } 

In Ihrem Fall kann dies wie folgt geschehen:

private readonly TimeSpan _updateInterval = TimeSpan.FromSeconds(10); 
private Timer _timer ; 
public Form1() 
{ 
    InitializeComponent(); 
    this.DoubleBuffered = true; 
    _timer = new Timer(timer_Tick, null, _updateInterval, _updateInterval); 

    NewFile(); 

} 
     private void timer_Tick(object state) 
{ 
    MessageBox.Show("TIMER TICKS"); 

    doc.MoveBalls(leftX, topY, width, height); 
    doc.CheckCollision(); 
    Invalidate(true); 

    Console.WriteLine("Moving2"); 
} 

ich eine final result video für Ihre Unterstützung aktualisiert haben diese bitte an:

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     private readonly TimeSpan _updateInterval = TimeSpan.FromSeconds(1); 
     private System.Threading.Timer _timer; 
     public Form1() 
     { 
      InitializeComponent(); this.DoubleBuffered = true; 
      _timer = new System.Threading.Timer(timer_Tick, null, _updateInterval, _updateInterval); 

      NewFile(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 

     } 
     private void NewFile() { } 
     private void timer_Tick(object state) 
     { 
      MessageBox.Show("TIMER TICKS"); 

      //doc.MoveBalls(leftX, topY, width, height); 
      //doc.CheckCollision(); 
      //Invalidate(true); 

      Console.WriteLine("Moving2"); 
     } 
    } 
} 
+0

gibt es eine error Timer-Konstruktor kann mit einem oder null Argumenten sein. – andonova

+0

verwenden Sie bitte die Verwendung von System.Threading; in Ihren Importen – Technacron

+0

und wo soll ich system.windows.forms.timer ?? – andonova

1

Sie den Timer aktiviert, bevor Sie das OnTick Ereignis zuordnen. Einstellung Enabled auf True ist im Grunde das gleiche wie timer.Start(). Entfernen Sie die Enabled-Zuweisung, oder ersetzen Sie den Aufruf von Start() damit.

+0

Ich habe Enabled entfernt und funktioniert immer noch nicht. – andonova

0

Verwendung System.Windows.Forms.Timer mit winform oben angegebenen

public Form1() 
    { 
     InitializeComponent(); 
     this.DoubleBuffered = true; 
     System.Windows.Forms.Timer timer = new Timer(); 
     timer.Enabled = true; 
     timer.Interval = 50; 
     timer.Tick += new EventHandler(timer_Tick); 
     //Console.WriteLine("STARTING TIMER"); 
     timer.Start(); 

    } 
+0

Immer noch Timer tickt nicht .. – andonova

+0

check updated one – Mostafiz

+0

Ich habe geändert und wieder tickt es nicht – andonova