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

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

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

IEnumerator から async/await に変更

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■93099 / inTopicNo.1)  IEnumerator から async/await に変更
  
□投稿者/ madogoshi (1回)-(2019/11/20(Wed) 09:22:42)

分類:[C#] 

IEnumerator _co = _Routine();

// 毎フレーム呼ばれる
void Update()
{
    _co.MoveNext();
}

// 非同期処理
IEnumerator _Routine()
{
   // 非同期処理
}

上記のようなコルーチンと毎フレーム呼ばれるメソッドを用いて
非同期処理を1フレームずつ進めるコードですが、
IEnumerator ではなく async/await で書くとどのような書き方になるでしょうか?
よろしくお願いいたします。

引用返信 編集キー/
■93105 / inTopicNo.2)  Re[1]: IEnumerator から async/await に変更
□投稿者/ 魔界の仮面弁士 (2491回)-(2019/11/20(Wed) 10:25:42)
No93099 (madogoshi さん) に返信
> IEnumerator ではなく async/await で書くとどのような書き方になるでしょうか?

C# 8.0 にて、 IAsyncEnumerator<T> や IAsyncEnumerable<T> のサポートが追加されています。
https://ufcpp.net/study/csharp/cheatsheet/ap_ver8/#async-stream
引用返信 編集キー/
■93106 / inTopicNo.3)  Re[1]: IEnumerator から async/await に変更
□投稿者/ とっちゃん (648回)-(2019/11/20(Wed) 10:27:48)
No93099 (madogoshi さん) に返信

> 上記のようなコルーチンと毎フレーム呼ばれるメソッドを用いて
> 非同期処理を1フレームずつ進めるコードですが、
> IEnumerator ではなく async/await で書くとどのような書き方になるでしょうか?
> よろしくお願いいたします。

まずはこの辺かな?
https://ufcpp.net/study/csharp/async/asyncstream/

検索すると山ほど出てきます。用途によって(Unityとかだとまた状況違う)どれをという選択肢が大幅に変わるので
いろいろ検索してみてください。

キーワードとしては、「IAsyncEnumerable<T>」ですかね。

引用返信 編集キー/
■93125 / inTopicNo.4)  Re[2]: IEnumerator から async/await に変更
□投稿者/ madogoshi (2回)-(2019/11/22(Fri) 08:50:41)
ありがとうございます。
async を調べてみたら、コルーチンも進めなくても
開始イベントで非同期処理呼び出して
Task.Delay でフレーム更新まで待つだけでもできそうでした。
無勉でしたすみません。


解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ