タグ

asyncに関するdelegateのブックマーク (22)

  • 【C#】非同期処理とasync/await - Annulus Games

    今回の記事はasync/awaitについて。 C#に限らず、現在では多くのプログラミング言語が非同期処理を扱う言語機能としてasync/awaitを採用しています。現在の.NETでも至る所にasync/awaitが使われており、避けて通ることはできない重要な機能となっています。 そこで今回は、C#における非同期処理とasync/await、またC#8.0で導入された非同期ストリームとIAsyncEnumerable<T>について、基的な使い方を解説していきます。 また、記事の後半では実際にasync/awaitがどのように動作しているかをコンパイル結果を通して説明していきます。この辺りはやや高度なトピックになるため読み飛ばしていただいても構いませんが、async/awaitをより深く理解したい方は是非そちらも読んでみてください。 同期処理 / 非同期処理 async/awaitに関する話

    【C#】非同期処理とasync/await - Annulus Games
  • async/awaitにおけるエラー処理を実行の順番から整理する - Qiita

    はじめに promiseを使うとき、いつもpromiseメソッドチェーンで記載していますか? async/awaitを利用していますか? もちろん状況によって両方書くのが殆どだとは思うのですが、私はasync/awaitの方が同期的な書き方ゆえに読みやすいため、なるべくそちらで記載しています。しかしながら、エラーハンドリングが理解できていなかったため、エラーの所在を突き止めるのに苦労してしまいました。 そのため、これを機にasync/awaitにおけるエラーハンドリングについて備忘録的にまとめておきます。 この記事のまとめ; catchされるエラーはrejectのみか、throwされたエラーも含まれるか →両方catchできる async関数における処理の順序、awaitがある場合とない場合 →awaitがない場合には同期的に処理が実行され、catchできなくなる エラー処理を外側に伝播し

    async/awaitにおけるエラー処理を実行の順番から整理する - Qiita
  • 【C#】C# の async/await は実際にどうやって動いているか。 - ねののお庭。

    はじめに 登壇版 Taskの質 C# のイテレータ async/await Compiler Transform ExecutionContext builder.Start() の重要性 IAsyncStateMachine.MoveNext おわりに はじめに C#er は呼吸するように使っている async/await。 そんな async/await について、先日 Stephen Toub 氏 (.NET の中の人。中心人物の一人。) が How Async/Await Really Works in C# という非常に面白い記事を投稿していました。 この記事では Stephen 氏の記事をベースに、C# において async/await は実際どうやって動いてるの?というお話をしていきます。 以前に C#での非同期メソッドの分析。 という翻訳記事を書いたのですが、元になった記

    【C#】C# の async/await は実際にどうやって動いているか。 - ねののお庭。
  • 非同期処理、なにもわからない

    最近のお仕事で、C#の非同期処理の書き方が分からずに、溶岩地帯に自爆していくコードを沢山みるようになったので、ケースとして日常風の記事にしてみました。 どんな風にハマってしまい、どうやって解決するのかが分かると思います。 結論 先に書いておきます。 Task.Run()を使ってはいけません Task.Result, Task.Wait()を使ってはいけません Threadクラスを使ってはいけません async-await構文だけを使って書きます async voidにするのは特殊な場合だけです がんばれー、わかってしまえば難しくない! 補足: もしあなたがJavaScriptで非同期処理を書いた事があるなら、その知識をそのまま生かせます。 JavaScriptではTaskの代わりにPromiseを使いますが、Promiseには上記1,2,3は存在しません。しかし、それで困ることはありません

    非同期処理、なにもわからない
  • (C#) async/await を理解する - ネコのために鐘は鳴る

    この記事は Qiita C# Advent Calendar 2021 の5日目の記事です。 はじめに C# で async/await が登場してからずいぶんと時間がたち、モダンな C# においてはほぼ必須となりました。Unity でも UniTask などのライブラリもあり、簡単に非同期処理が書けます。この記事では C# での非同期処理の歴史にも触れつつ async/await の動作原理について書きます。 Unity C# の話を書いた方が需要が高そうなので Unity および UniTask を前提にした説明とコードが多く出てきますが、async/await は C# の言語機能であるため、動作原理自体は .NET でも同じです。非 Unity の文脈では適宜読み替えてください。 また、詳細を完璧に説明するよりもわかりやすさを重視したため、一部正確さを欠いた説明をしています。ご了承

    (C#) async/await を理解する - ネコのために鐘は鳴る
  • neue cc - C#のasync/await再考, タイムアウト処理のベストプラクティス, UniTask v2.2.0

    お題を3つ並べましたが、記事は逆順で書いていきます!というわけで、UniTask v2.2.0を出しました。改めてUniTask v2とはUnityのためのゼロアロケーションasync/awaitと非同期LINQを実現するライブラリで、とv2リリース時の解説記事を貼っつけましたが、ちょいちょい細かい改善を続けてまして、今回v2.2.0になります。 PlayerLoopへのループ挿入のカスタマイズ対応 現状のUnityはPlayerLoop上で動いていて、Unity 2020.1のリストをここに置いておきましたが、デフォルトでは120個ぐらいのループがエンジンから駆動されています。UpdateループだけでもScriptRunBehaviourUpdate, ScriptRunDelayedDynamicFrameRate, ScriptRunDelayedTasks, DirectorUpd

  • JavaScriptの非同期処理Promise、AsyncとAwaitの仕組みをGIFアニメで解説

    JavaScriptの非同期処理Promise、AsyncとAwaitの仕組みをGIFアニメで解説した記事を紹介します。 ⭐️🎀 JavaScript Visualized: Promises & Async/Await by Lydia Hallie 下記は各ポイントを意訳したものです。 ※当ブログでの翻訳記事は、元サイト様にライセンスを得て翻訳しています。 はじめに コールバック地獄 Promiseの構文 イベントループ: Microtasksと(Macro)tasks AsyncとAwait はじめに JavaScriptのコードが期待通りに実行されないことに悩まされたことはないですか? おそらく、関数が不規則に実行されたり、予測できないタイミングで実行されたり、実行が遅れたりしたことがあるかもしれません。そして、ES6で導入された新機能Promiseが原因かもしれません! 何年も

    JavaScriptの非同期処理Promise、AsyncとAwaitの仕組みをGIFアニメで解説
  • Rustのasync/awaitとスケジューラの話 / rust-async-await

    Effectで作る堅牢でスケーラブルなAPIゲートウェイ / Robust and Scalable API Gateway Built on Effect

    Rustのasync/awaitとスケジューラの話 / rust-async-await
  • ブレイドエクスロードを例にした大規模開発におけるC#コード解析とUniRxでの非同期処理のベストプラクティス

    ブレイドエクスロードを例にした大規模開発におけるC#コード解析とUniRxでの非同期処理のベストプラクティス 2018.11.07 Cysharpの河合(@neuecc)です。アプリボットさんには、gRPC関連の支援なども含め、ちょこちょことお邪魔しております。と、いうわけで、ゲスト寄稿回!今回は先日TGS2018で発表された新作、ブレイドエクスロードにおける UniRx の使用例について、解析手法など含めてご紹介します。 UniRxは、私の開発しているオープンソースのライブラリで、Unityに特化したReactive Extensionsの実装となります。イベント周りの処理や、非同期周りの処理が書きやすくなる、ということを利点にしていて、現在は特に日のモバイルゲームのライセンス表記ではよく見かけるようになりました。 ブレイドエクスロードでは、広範に全面的に根っこから導入されていると聞い

    ブレイドエクスロードを例にした大規模開発におけるC#コード解析とUniRxでの非同期処理のベストプラクティス
  • Reduxで非同期処理を行う~ES2017のasync/await構文を使って実装する方法

    対象読者 JavaScriptとWeb開発の基礎に理解がある方 Reactに興味/関心があり、これから学び始める方 前提環境 筆者の検証環境は以下の通りです。 macOS High Sierra 10.13.3 Node.js v8.9.4/npm 5.6.0 React 16.3.1 redux 3.7.2 react-redux 5.0.7 async/awaitとは(1) async/await構文はECMAScript 2017で追加された、新しい文法です。その名の通り、 async キーワードと await キーワードの組み合わせで成り立っています。また、非同期処理の仕組みであるPromiseとも密接に連携しています。それぞれの要素について説明します。 Promiseとは async/await構文を説明するにあたり、Promiseは切り離すことができません。まずはPromise

    Reduxで非同期処理を行う~ES2017のasync/await構文を使って実装する方法
  • JavaScript の async/await の仕様をずっと誤解していた

    すごい初歩的なことかもしれないのだけれど、年単位ぐらいで誤解したままコードを書いていたので懺悔のためにも書いておく...。 何が違ったかというと、async function の扱いである。async function も function と同じだとおもっていて、 Promise を返さないと呼び出し側で await できないと勘違いしていた。そのため、今までは

    JavaScript の async/await の仕様をずっと誤解していた
  • 幸せな非同期処理ライフを満喫するための基礎から応用まで - Qiita

    クライアントアプリにとって、マルチスレッドプログラミングは避けては通れない重要な概念です。しかし、気をつけないとハマるポイントも多く、初めてクライアントアプリを学ぶ人たちからすると、複雑で難解な取っつきづらいものでもあります。ここでは、スレッドの基から、効率的な使い方、また複雑化しやすいポイントをシンプルに実装するためのノウハウを見ていきます。 TL;DR スレッドの取り扱い方を知る Threadをそのまま使わず、AsyncTaskやIntentService、時にThreadPoolExecutorを使ってスレッドの使い方を効率化する。 複雑な処理フローをシンプルに扱うためのフレームワークを導入する PromiseやRxAndroidなどで、複雑化しやすいポイントを整理する。 スレッドの基 スレッドといえば、ThreadクラスやRunnableクラスがベースにあります。以下のようにす

    幸せな非同期処理ライフを満喫するための基礎から応用まで - Qiita
  • Windows 8時代のUXを支える非同期プログラミング

    11. 「注文が決定する」イベントハンドラ 注文が決定する 注文決定イベント引数 注文 注文を得る テーブル番号 材料 材料を得る 注文 レシピ レシピを得る 注文 料理 レシピ 作成する 材料 提供する 料理 テーブル番号 11 12. 料理が完成するまでは一切何もできません お客さん 料理店の人 「呼び出しボタン」 を押す 注文が決定する 注文決定イベント引数 注文 注文を得る テーブル番号 材料 材料を得る 注文 レシピ レシピを得る 注文 料理 レシピ 作成する 材料 提供する 料理 テーブル番号 料理が 運ばれてくる 12 13. ボタンを押すと結果が返るまで は応答不能 ユーザー メインスレッド ボタン を押す 注文が決定する 注文決定イベント引数 注文 注文を得る テーブル番号 材料 材料を得る 注文 レシピ レシピを得る 注文 料理 レシピ 作成する 材料 提供する 料理

    Windows 8時代のUXを支える非同期プログラミング
  • [C#] async, await

    メソッドの宣言に async を付けると非同期メソッドとなり、メソッドの中で awaitが指定できるようになる。 await を指定すると非同期メソッドの実行が終わるまで待ってから制御を戻す。 分かりやすい参考サイト http://ufcpp.net/study/csharp/sp5_async.html#async HttpClientクラスを使って、asyncとawaitを試してみる。 ■どこからかコピペしてきたりしてつくった、おれおれサンプル class Program { static void Main(string[] args) { Console.WriteLine("読み込みを開始します"); // 非同期で実行 readWebAsync("http://www.google.co.jp/").ContinueWith( (task) => { // task.Resul

  • async/awaitと同時実行制御

    C# 5.0のasync/awaitを使うと、多くの場面ではシングル スレッド的な動作になるし、多くの場面ではlock不要(結果的に、デッドロックが起こりようなくなる)になったりします。 ただし、「多くの場面で」。「必ず」ではないのがはまりどころ。いくつかの場面では、同時実行制御が必要です(普通にマルチスレッドの平行実行になるので、同時に同じデータにアクセスされる可能性を考慮しないとバグります)。 前提知識 いくつか、C# 5.0世代の非同期処理についての前提知識は、以下のスライド(先月末の.NETラボでの発表)を参考にしてください。 5~12ページ: async/awaitの書き方 17~22ページ: スレッドとそのコスト 24~26ページ: スレッド プール 29~32ページ: I/O完了待ちと非同期API 36~40ページ: UIスレッドとディスパッチャー 41~45ページ: 同期コ

    async/awaitと同時実行制御
  • これからの「async/await」の話をしよう

    これからの「async/await」の話をしよう 名古屋GeekBar 2014/09/08 http://www.kekyo.net/2014/09/09/%e3%81%93%e3%82%8c%e3%81%8b%e3%82%89%e3%81%ae%e3%80%8casyncawait%e3%80%8d%e3%81%ae%e8%a9%b1%e3%82%92%e3%81%97%e3%82%88%e3%81%86-%e5%90%8d%e5%8f%a4%e5%b1%8bgeekbar/Read less

    これからの「async/await」の話をしよう
  • neue cc - asyncの落とし穴Part3, async voidを避けるべき100億の理由

    だいぶ前から時間経ってしまいましたが、非同期の落とし穴シリーズPart3。ちなみにまだ沢山ネタはあるんだから!どこいっても非同期は死にますからね! async void vs async Task 自分で書く場合は、必ずasync Taskで書くべき、というのは非同期のベストプラクティスで散々言われていることなのですけれど、理由としては、まず、voidだと、終了を待てないから。voidだと、その中の処理が軽かろうと重かろうと、終了を感知できない。例外が発生しても分からない。投げっぱなし。これがTaskになっていれば、awaitで終了待ちできる。例外を受け取ることができる。await Task.WhenAllで複数同時に走らせたのを待つことができる。はい、async Taskで書かない理由のほうがない。 んじゃあ何でasync voidが存在するかというと、イベントがvoidだから。はい。b

  • Async/Await - 非同期プログラミングのベスト プラクティス

    async void を避ける 使用できる戻り値の型には、Task、Task<T>、および void の 3 つがありますが、async メソッドで自然な戻り値の型は Task と Task<T> だけです。同期コードから非同期コードに変換する際、型 T を返すメソッドはすべて Task<T> を返す async メソッドになり、void を返すメソッドはすべて Task を返す async メソッドになります。次のコード スニペットは、void を返す同期メソッドとそれに相当する非同期メソッドを示しています。 void MyMethod() { // Do synchronous work. Thread.Sleep(1000); } async Task MyMethodAsync() { // Do asynchronous work. await Task.Delay(1000);

    Async/Await - 非同期プログラミングのベスト プラクティス
  • [C#]async/awaitの使い方メモ、その1。 | Kimux.Net

    今後の.NET開発では必須スキルか。 .NETでの非同期処理の書き方があまりにも色々ありすぎて覚えるのも大変。でも、async/awaitを使用した非同期処理は今後重要なキーワードとなってきそうです。 参考 連載:C# 5.0&VB 11.0新機能「async/await非同期メソッド」入門 http://www.atmarkit.co.jp/ait/subtop/features/da/ap_masterasync_index.html ボタンをクリックすると1秒間隔でラベルの文字が変更するプログラムを書く。 フォームのボタンをクリックすると1秒間隔で10回、ラベルの文字が変更するプログラムを考えます。 非同期処理を使わない例。 非同期処理の効用を知るために、非同期処理を使わないで処理を書いてみます。 private void button1_Click(object sender, E

  • 非同期プログラミングのベスト プラクティス まとめ1 - Qiita

    http://msdn.microsoft.com/ja-jp/magazine/jj991977.aspx の前半部分まとめ。 戻り値がvoidのメソッドを非同期呼び出ししない 理由 戻り値が無い為、呼び出し側でタスクの終了を検出することができない為。 戻り値が無い為、タスクで発生した例外を呼び出し側で補足することができない為。 例外 イベントハンドラーはOK。→ 前項の理由のような挙動でも問題ない。 すべて非同期にする 同期処理と非同期処理、具体例を挙げると await と Task.Waite() を同一処理パスに混在させてはいけない。アプリケーション形態(WindowsFormアプリ、WPFアプリ、SilverLightアプリ、ASP.NETアプリ)によってはデッドロックが発生する。 ※なんとなくデッドロック発生のイメージが浮かぶ程度の理解しかできていませんが、下記コードのコメント

    非同期プログラミングのベスト プラクティス まとめ1 - Qiita