2012-01-05 24 views
0

こんにちは、私はWebアプリケーションでWindows.Forms.Timerを使用しています。私はTimer_Tickを処理するためにTimer.Tickイベントハンドラを作成しますが、私は成功していません。私は何の誤りもありませんが、結果を得ることはできません。ここに私のコードですTimer.Tickイベントハンドラがイベントを受け取っていませんTimer_Tick in Timer

 System.Windows.Forms.Timer StopWatchTimer = new System.Windows.Forms.Timer(); 
    Stopwatch sw = new Stopwatch(); 

public void StopwatchStartBtn_Click(object sender, ImageClickEventArgs e) 
{ 
    StopWatchTimer.Enabled = true; 
    StopWatchTimer.Interval = 1; 
    StopWatchTimer.Start(); 
    this.StopWatchTimer.Tick += new EventHandler(StopWatchTimer1_Tick); 
    sw.Start(); 
} 


protected void StopWatchStopBtn_Click(object sender, ImageClickEventArgs e) 
{ 
    StopWatchTimer.Stop(); 
    sw.Reset(); 
    StopWatchLbl.Text = "00:00:00:000"; 
} 

public void StopWatchTimer1_Tick(object sender,EventArgs e) 
{ 
    TimeSpan elapsed = sw.Elapsed; 
    StopWatchLbl.Text = string.Format("{0:00}:{1:00}:{2:00}:{3:00}", 
          Math.Floor(elapsed.TotalHours), 
          elapsed.Minutes, 
          elapsed.Seconds, 
          elapsed.Milliseconds); 
} 
+1

なぜSystem.Timers.Timer'の代わりにWinFormsの 'Timer'を使用していますか? –

+0

StopWatchTimerとswとは何ですか? –

+0

DeviantSeev私は答えがあると思いますが、StopWatchTimerとswの違いは何ですか? – user1231231412

答えて

4

the MSDN documentation for Windows Forms Timer(強調鉱山)から:

は、ユーザ定義の間隔でイベントを発生させるタイマを実装。このタイマーはWindowsフォームアプリケーションでの使用に最適化されており、はウィンドウで使用する必要があります。

このタイマーは、Webアプリケーションでは機能しません。 System.Timers.Timerのような別のクラスを使用する必要があります。しかし、これは自分の落とし穴です。

+0

System.Timers.Timerでティックイベントをどうやって与えることができますか? – Hiren

+0

簡単にグーグルではありますが、ここに行きます:http://www.java2s.com/Code/CSharp/Development-Class/SystemTimersTimerclass2.htmを使って説明してください –

1

タイマーを開始する前にTickイベントを定義しようとしましたか?

this.StopWatchTimer.Tick += new EventHandler(StopWatchTimer1_Tick);  
StopWatchTimer.Start(); 
+0

私はそれを試しても動作しません – Hiren

+0

これはタイマーを使用する正しい方法ですが、あなたはWebアプリケーションのためにそれを使用しようとしています。実際の問題に関しては、他の回答を参照してください。 – evasilchenko

+0

OMGそれはWebアプリケーションです... Facepalm ... –

1
public partial class TestFrom : Form 
{ 
    private Thread threadP; 
    private System.Windows.Forms.Timer Timer = new System.Windows.Forms.Timer(); 
    private string str; 

    public TestFrom() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     Timer.Interval =100; 
     Timer.Tick += new EventHandler(TimeBussiness); 
     Timer.Enabled = true; 
     Timer.Start(); 
     Timer.Tag = "Start"; 
    } 

    void TimeBussiness(object sender, EventArgs e) 
    { 
     if (threadP.ThreadState == ThreadState.Running) 
     { 
      Timer.Stop(); 
      Timer.Tag = "Stop"; 
     } 
     else 
     { 
      //do my bussiness1; 
     } 
    } 

    private void button3_Click(object sender, EventArgs e) 
    { 
     ThreadStart threadStart = new ThreadStart(Salver); 
     threadP= new Thread(threadStart); 
     threadP.Start(); 
    } 

    private void Salver() 
    { 
     while (Timer.Tag == "Stop") 
     { 

     } 
     //do my bussiness2; 
     Timer.Start(); 
     Timer.Tag = "Start"; 
    } 
} 
関連する問題