###前提・実現したいこと
ボタンA,Bがあり、ボタンAを押した後に関数Aが実行され関数Aの処理が終わらない内にボタンBを押すと関数Bが実行され、関数Aと関数Bが並列に実行されるため処理が変になります。
ボタンを押したら今の処理を終わって新しく処理を開始したいです。
グローバル変数で管理しようと思ったのですが関数内にfor文が幾つかあり、いちいちフラグ管理を入れると長くなるのでもっとスマートに出来たら嬉しいのですが、何かいい方法がありませんか。
###該当のソースコード
C#
1 //ボタンAが押された時 2 private async void funcA() { 3 for(int i =0;i<50;i++) { 4 //処理A 5 Slider.Value = i; 6 await Task.Delay(50); 7 } 8} 9 10//ボタンBが押された時 11private async void funcB() { 12 for(int i =50;i>0;i--) { 13 //処理B 14 Slider.Value = i; 15 await Task.Delay(50); 16 } 17} 18 19//何かしらのボタンが押された時 20 private void Buttons_Clicked(object sender, RoutedEventArgs e) 21 { 22 String btnName = ((Button)sender).Name.Replace("Button", ""); 23 switch (btnName) 24 { 25 case "A": //ボタンAが押された 26 funcA(); 27 break; 28 case "B": //ボタンBが押された 29 funcB(); 30 break; 31 } 32 }
関数はイメージです。徐々にスライドバーを動かすような処理をしています。実際は複数のスライドバーを順番に動かしているためfor文が幾つかあります。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/09/29 08:05
2017/09/29 15:19 編集
2017/10/02 02:36