非同期処理を勉強中なのですが、以下のようなコードを実行するとSystem.Threading.Tasks.Task.IsCompletedが永遠とtrueになりません。
Hoge()が実行し終わり、RunAsync()が実行し終わった時点でTask.IsCompletedがtrueなると考えているのですが、違うのでしょうか?
何卒よろしくお願いいたします。
cs
1public class Test : MonoBehaviour 2{ 3 public void Start() 4 { 5 Execute(); 6 } 7 8 public void Execute() 9 { 10 Task<TimeSpan> t = RunAsync(); 11 while (!t.IsCompleted) 12 { 13 t.Wait(10); 14 } 15 UnityEngine.Debug.Log(t.Result); 16 } 17 18 public async Task<TimeSpan> RunAsync() 19 { 20 var watch = Stopwatch.StartNew(); 21 await Task.Run(Hoge); 22 watch.Stop(); 23 return watch.Elapsed; 24 } 25 26 private void Hoge() 27 { 28 // 適当な処理 29 int i = 0; 30 } 31 32}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。