タグ

ブックマーク / www.kekyo.net (3)

  • 非同期処理、なにもわからない

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

    非同期処理、なにもわからない
    rumbaba
    rumbaba 2021/07/29
  • .NET非同期処理(async-await)と例外の制御

    Taskクラスとasync-awaitを使用して非同期処理を記述する場合の、例外にまつわるあれこれをまとめました。 概要: 表面上は殆ど変らない 現実の動作 タスクコンテキストとスレッドコンテキスト スタックウォーク 処理されない例外 この記事は、非同期処理と例外処理について、多少難易度の高い話題を含みます。もし、もっと基的な記述方法や、安全に例外を処理する方法を知りたい場合は、この記事をお勧めします: 「.NET非同期処理で例外を安全に対処する」 この記事の前に、非同期処理の基を扱った記事もあります: 「.NET非同期処理(async-await)を制御する、様々な方法」 非同期処理中に発生する例外の捕捉 非同期処理中に発生する例外を捕捉する方法は、一般的な例外の捕捉とほとんど変わりません。 // 指定されたURLからHTMLコンテンツをダウンロードする public static

    .NET非同期処理(async-await)と例外の制御
  • 列挙可能から完全なるモノまで – IEnumerableの探索 – C# Advent Calendar 2014

    この投稿は、C# Advent Calendar 2014 の14日目の記事です。 IEnumerableにまつわるアレやアレ こんにちは! いつもはAsyncとLINQの事をしゃべったり書いたりしています。「列挙可能から完全なるモノまで – IEnumerableの探索」というお題で書いてみようと思います。 .NETでは、LINQにまつわるインターフェイスがかなり多く含まれています。その中でも、IEnumerableインターフェイスの継承グラフに存在する様々なインターフェイスを、どのように使い分けるべきか、と言うのが分かりにくいかも知れません。沢山のインターフェイスが定義されているのは、歴史的な事情もあります。 LINQ to ObjectやLINQ to Entitiesなど、一般的に使用されているLINQの背景には、「列挙可能である」という性質があります。この事は、以前にLINQの勉

    列挙可能から完全なるモノまで – IEnumerableの探索 – C# Advent Calendar 2014
  • 1