C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 158 を表示中)
■91647 / )  async/awaitの使い方
□投稿者/ こまお (1回)-(2019/07/17(Wed) 16:42:41)

分類:[C#] 

こんにちは。
重たい処理をするのに↓のようなことをしているのですが、
(1)を書くとなぜか(2)に来なくなってしまいます。
何が良くないのでしょうか。
よろしくお願いします。

using System.Threading;
using System.Threading.Tasks;
using System.Windows;

namespace Sketch {

  public partial class MainWindow : Window {

    public MainWindow() {
      InitializeComponent();
    }

    class AsyncTest {
      private bool busy = false;

      public bool IsBusy() {
        return busy;
      }

      public async void AsyncMethod() {
        busy = true;
        await Task.Run(() => {
          HeavyWeightMethod();
        });
        busy = false; //(2)ここへ来なくなる
      }

      public void HeavyWeightMethod() {
        Thread.Sleep(1000);
      }
    }

    private void Button_Click(object sender, RoutedEventArgs e) {
      var asyncTest = new AsyncTest();

      asyncTest.AsyncMethod();

      while(asyncTest.IsBusy()) { //(1)これを書くと...
        Thread.Sleep(100);
      }

      MessageBox.Show("Done");
    }
  }
}

返信 編集キー/


管理者用

- Child Tree -