私はC#、Net4.0とVisual Studio 2010を使用していますが、ユーザーがボタンをクリックすると、Windowsフォームアプリケーションからこの動作を取得しようとしています:SAMEボタンのクリックイベント内のC#の開始と停止スレッド
時点2での動作は、LEDがprivate void Btn_WebService_Click(object sender, EventArgs e)
{
Thread_Blink = new Thread(() => { LED_Blink(LED.WS); });
Thread_Blink.Start();
// Do something that takes time.. Let's imulate with a sleep
Thread.Sleep(2000);
Thread_Blink.Abort();
}
点滅を停止終了する
- A GUI LEDは が
- 長いラング操作が
を開始点滅を開始します私はまた、3つの異なるイベント及び/又はタイマーを使用してみました
..
private void Btn_WebService_MouseDown(object sender, MouseEventArgs e) { Timer_Blink.Enabled = true; } private void Btn_WebService_Click(object sender, EventArgs e) { // Do something that takes time.. Let's imulate with a sleep Thread.Sleep(2000); } private void Btn_WebService_MouseUp(object sender, MouseEventArgs e) { Timer_Blink.Enabled = false; }
結果は常に同じである:LEDは、長い運転操作(
Thread.Sleep(2000);
)の端部にのみ点滅し始め、突然STOPSあなたは何も見ることができません。なぜこれが起こり、どのようにして目的の動作を得ることができますか?さらに詳しい情報を追加します。 (LEDON(LED.WS);)TestWebServiceのは()私はオフLED得る実行されている間
private void Btn_WebService_Click(object sender, EventArgs e) { BlinkWorker.RunWorkerAsync(LED.WS); LedOn(LED.WS); TestWebService(); // This method takes about 2 seconds to answer.. LedOff(LED.WS); BlinkWorker.CancelAsync(); }
:私はBackgroundWorkedを使用しようと、このように希望behavourを実施しました。 TestWebService()が終了すると、LEDが点灯します。 Clickイベントの中で開始およびキャンセルされた場合でもBlinkWorkerは機能しません。
FYI:点滅を開始するボタンとそれを停止するボタンを作成すると、完全に機能します。