開発環境:visual studio 2017
現在、タイマー処理を利用して一定時間毎にループする処理を実装したいのですが、苦戦しています。
苦戦している点は、停止時にFormは消さずに処理のみ停止させたいです。
現状は下記で記載しています。停止ボタンを押すとアプリケーションごと終了させてしまっています。
希望としては、
①Formを消さずにループ処理のみ終了させたい
②いつでもボタンを押せば停止するようにしたい。
③再度、実行するときは最初からスタートしたい
です。
タイマーの種類も多く存在しており、いろいろなサイトを見ても理解出来ていません。
下記のソースを使ってこんな感じに記載すればよいと教えていただけると理解して今後に生かせると思っていますのでお手数をおかけ致しますが回答お願いいたします。
C#
1public partial class Form1 : Form 2 { 3 System.Windows.Forms.Timer timer1 = new System.Windows.Forms.Timer(); 4 System.Windows.Forms.Timer timer2 = new System.Windows.Forms.Timer(); 5 loop1(Main_loop); 6 loop2(sabu_loop); 7 public Form1() 8 { 9 InitializeComponent(); 10 button1.Enabled = true; 11 button2.Enabled = false; 12 } 13 public void button1_Click(object sender, EventArgs e) 14 { 15 button1.Enabled = false; 16 button2.Enabled = true; 17 18 //タイマー開始 19 timer1.Enabled = true; 20 timer2.Enabled = true; 21 } 22 private void button2_Click(object sender, EventArgs e) 23 { 24 //タイマーの停止 25 timer1.Enabled = false; 26 timer2.Enabled = false; 27 //ボタンを戻す 28 button1.Enabled = true; 29 button2.Enabled = false; 30 } 31 32 //3秒ごとに動くタイマー 33 public void loop1(EventHandler eventHandler) 34 { 35 timer1.Tick += new EventHandler(eventHandler); 36 timer1.Interval = 1000; 37 timer1.Enabled = false; 38 39 } 40 //numericUpDown1 * 60秒 でループするタイマー 41 public void loop2(EventHandler eventHandler) 42 { 43 int intVal = Decimal.ToInt32(numericUpDown1.Value); 44 timer2.Tick += new EventHandler(eventHandler); 45 timer2.Interval = intVal * 60000; 46 timer2.Enabled = false; 47 } 48 private void Main_loop(object sender, EventArgs e) 49 { 50 //メイン処理 51 } 52 void sabu_loop(object sender, EventArgs e) 53 { 54 //サブ処理 55 } 56 57 } 58} 59
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/16 02:52
2018/11/16 03:03
2018/11/16 03:21
2018/11/16 03:45
2018/11/16 03:56