[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

タグ

asyncと.netに関するkaorunのブックマーク (32)

  • ConfigureAwait FAQ - .NET Blog

    Join us on September 18th as we dive deep into building world-class cloud native applications with .NET and Azure. .NET added async/await to the languages and libraries over seven years ago. In that time, it’s caught on like wildfire, not only across the .NET ecosystem, but also being replicated in a myriad of other languages and frameworks. It’s also seen a ton of improvements in .NET, in terms o

    ConfigureAwait FAQ - .NET Blog
  • Best practices for using HttpClient on Services

    Since HttpClient was released back in 2012 it's become the recommended way of talking to the web from C#. It follows the HTTP standard very closely and has very good support for the async programming model. During my years working in Services I've seen it used a lot. Sometimes people hit the same problems. Here are some tips on the best way of using it in a service that you expect will be running

    Best practices for using HttpClient on Services
  • 開発者を苦しめる.NETのHttpClientのバグと紛らわしいドキュメント

    Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。このでは、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...

    開発者を苦しめる.NETのHttpClientのバグと紛らわしいドキュメント
  • .NETで非同期ライブラリを正しく実装する

    アプリケーション開発者はシグネチャを見て、このルールに従っていると仮定します。例えば、ライブラリに同期メソッドがあれば、利用者側はスレッドプールを使って安全に並列化できると仮定できます。しかし、非同期であれば、スレッドを新しく生成するのは無駄で、シングルスレッドのループの中で非同期メソッドを実行するほうがいいと判断するでしょう。 このように考えると、さらに基的な原則が生まれます。 “ライブラリ内でTask.Runを使わない” スレッド、特にスレッドプールのスレッドはグローバルに共有されているリソースで、アプリケーション開発者に属しています。ライブラリの作者はTask.Runを使ったり、スレッドを作るメソッドを作成するべきではありません。どのようなタイミングでスレッドを追加するか決めるのはアプリケーション開発者の権利と責任です。 次のコードは典型的なアンチパターンです。 public st

    .NETで非同期ライブラリを正しく実装する
  • 非同期メソッド入門 - xin9le.net

    .NET Framework 4.5 / C# 5.0 から提供された非同期メソッドについての連載インデックス インデックス 非同期処理の歴史 非同期メソッドの概要 async修飾子とawait演算子 任意の記述場所 UIスレッドとの同期 戻り値 例外処理 非同期メソッドの内部実装 内部実装を覗く コンパイラ要件 Awaitableパターンの自前実装 WinRTとの相互運用 Rxとの相互運用 落ち穂拾い NET Framework 4.5以外でawaitする コンパイラ要件違反 単体テストの記述方法 機械的読み替えに注意 非同期勉強会 / Community Open Day 2012 その他の資料/動画 非同期勉強会 資料 Community Open Day 2012 資料 Three Essential Tips for Async @ITでの連載

  • Async Programming - Patterns for Asynchronous MVVM Applications: Commands

    This browser is no longer supported. Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support. April 2014 Volume 29 Number 4 Async Programming : Patterns for Asynchronous MVVM Applications: Commands Stephen Cleary This is the second article in a series on combining async and await with the established Model-View-ViewModel (MVVM) pattern. Last time

    Async Programming - Patterns for Asynchronous MVVM Applications: Commands
  • 非同期処理の基礎

    4. ThreadよりもTask for (int i = 0; i < num; i++) { var t = new Thread(_ => b[i] = F(a[i]) ); } for (int i = 0; i < num; i++) { Task.Run(() => b[i] = F(a[i]) ); } ×悪い例 ○良い(まだマシ※な)例 データの数だけ スレッド作成 Threadでなく Task利用 ※ この場合、ParallelクラスやParallel.Enumerableクラスが使いやすい 5. ThreadよりもTask for (int i = 0; i < num; i++) { var t = new Thread(_ => b[i] = F(a[i]) ); } for (int i = 0; i < num; i++) { Task.Run(() => b[

    非同期処理の基礎
  • Async History in .NET

    2. Name 鈴木孝明 Twitter Account @xin9le Award Microsoft MVP for Visual C# Web Site http://xin9le.net About Me

    Async History in .NET
  • neue cc - ForEachAsync - 非同期の列挙の方法 Part2

    Part2って、Part1はあったのかというと、うーん、非同期時代のLINQ、かな……?さて、今回はForEachがテーマです。といってもそれってSelect+WhenAllでしょ!「Selectは非同期時代のForEach」って言ってたじゃない、というと、はい、言ってました。まだ他に言うことあるの?というと、例えば以下のシチュエーション。 var httpClient = new HttpClient(); var tasks = Enumerable.Range(1, 100000) .Select(async x => { var str = await httpClient.GetStringAsync("http://hogehoge?q=" + x); Console.WriteLine(str); }); await Task.WhenAll(tasks); 別に動きはします

  • タスク ベースの非同期パターンの実装 - .NET

    タスク ベースの非同期パターン (TAP) は、3 つの方法 (Visual Studio の C# および Visual Basic コンパイラを使用する方法、手動で行う方法、またはコンパイラと手動による方法を組み合わせた方法) で実装できます。 以下のセクションでは、それぞれの方法について詳しく説明します。 TAP パターンを使用し、計算主体の非同期操作と I/O バインドの非同期操作の両方を実装できます。 [ワークロード] セクションでは、操作の各種類を確認します。 TAP メソッドを生成する コンパイラを使用する .NET Framework 4.5 以降、async キーワード (Visual Basic では Async) を使用して属性設定されているメソッドは、非同期メソッドと見なされ、TAP を使用して非同期にメソッドを実装するために必要となる変換が C# コンパイラおよび

    タスク ベースの非同期パターンの実装 - .NET
  • Xamarin7月リリースについて - ものがたり

    リリースされてから5日ほど経って書いているわけですが、しれっと7月のXamarinリリースについて書こうと思います。 今回のリリースは、7/22-7/25に行われたmonkeyspaceカンファレンスに合わせるかたちで行われたもので、つまりそれなりに予定されていたものです。7月リリースの目玉としては、Mono 3.xのバージョンが(ベータではない)3.2で正式版となって、それに対応したバージョンとなったというのが大きいです。 Mono 3.2の要点は↓のような感じです: ガベージコレクターがデフォルトでsgenになりました*1。それに加えてGCの停止時間を抑える low pause mode と、nursery collectionに加齢情報を使用して一定の水準に達した時点でのみメジャーヒープへのコピーを行う promotion-age が追加されたようです。この辺は環境変数MONO_GC

    Xamarin7月リリースについて - ものがたり
  • MSDN マガジン: 並列コンピューティング - SynchronizationContext こそすべて

    AsyncOperationManager と AsyncOperation .NET Framework の AsyncOperationManager クラスと AsyncOperation クラスは、SynchronizationContext を抽象化する軽量のラッパーです。AsyncOperationManager クラスは、AsyncOperation の初回作成時に現在の SynchronizationContext をキャプチャし、現在の SynchronizationContext が null であれば既定の SynchronizationContext に置き換えます。AsyncOperation クラスは、キャプチャした SynchronizationContext にデリゲートを非同期にポストします。 ほとんどのイベントベースの非同期コンポーネントは、その実装内で

    MSDN マガジン: 並列コンピューティング - SynchronizationContext こそすべて
  • Async in C# and F#: Asynchronous gotchas in C# (Japanese translation)

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    Async in C# and F#: Asynchronous gotchas in C# (Japanese translation)
  • neue cc - CloudStructures - ローカルとクラウドのデータ構造を透過的に表現するC# + Redisライブラリ

    というものを作りました。インストールはNuGetから。 GitHub - CloudStructures PM> Install-Package CloudStructures -Pre 何を言ってるのかヨクワカラナイので、まずはコード例を。 // こんなクラスがあるとして public class Person { public string Name { get; private set; } public List<Person> Friends { get; private set; } public Person(string name) { Name = name; Friends = new List<Person>(); } } // こんなのがいるとして var sato = new Person("さとう"); // 人を足す sato.Friends.Add(new

  • neue cc - AsyncOAuth - C#用の全プラットフォーム対応の非同期OAuthライブラリ

    待ち望まれていたHttpClientがPortable Class Library化しました、まだBetaだけどね!というわけで、早速PCL版のHttpClientをベースにしたOAuthライブラリを仕上げてみました。ポータブルクラスライブラリなので、.NET 4.5は勿論、Windows Phone 7.5, 8, Windows Store Apps, Silverlight, それと.NET 4.0にも対応です。 AsyncOAuth - GitHub 前身のReactiveOAuthがTwitterでしかロクにテストしてなくてHatenaでズタボロだったことを反省し、今回はSampleにTwitterHatenaを入れておきました&どっちでもちゃんと正常に動きます。なお、完全に上位互換なので、ReactiveOAuthはObsoleteです。それと、ライブラリのインストールはNu

  • 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と同時実行制御
  • [雑記] 非同期制御フロー

    概要 C# 5.0のasync/awaitがなかったころ、少し複雑目な非同期制御フローをどうやって実現していたかという話。 C# 5.0を使えない状況下で非同期処理を書くことになった場合の参考としてや、async/awaitがどうやって実現されているかを知るきっかけになると思います。 サンプル コード(ZIP 形式。proj/sln 含め一式。) ポイント C# 5.0(await演算子)便利だなー await演算子が内部的にやっていることは、イテレーターに近い なので、昔はイテレーターを使って非同期処理をすることが結構あった サンプルの要件 今回の例として使うのは、Figure 1に示すような、確認ダイアログ表示のフロー。 確認ダイアログを表示する例 要は、何かを実行するにあたって、特定条件下では確認ダイアログの表示が必要で、すべてのダイアログで「OK」を押したときにだけ実行に移るという

    [雑記] 非同期制御フロー
  • Windows ストア アプリで重要な非同期プログラミング(C#)について復習 - かずきのBlog@hatena

    ここでは、C# 5.0で追加された非同期プログラミングのための構文について説明します。 非同期プログラミングの必要性 非同期プログラミングは、Windows ストア アプリでは重要な要素です。50ms以上かかる可能性のあるAPIのほとんどが非同期として提供されています。これは、時間のかかる処理を、同期的に呼び出した場合にアプリケーションの応答が、止まってしまうという問題を起こさないためです。時間のかかる処理を同期的に行った場合のイメージを以下に示します。 このような処理は、タブレットなどのタッチユーザーインターフェースではユーザーに非常にストレスになります。Windows ストア アプリでは避けるべき挙動になります。ここで、時間のかかる処理を非同期に行った場合のイメージを以下に示します。 このような処理を簡単に実装できるようにC#5.0から導入されたasync修飾子とawait演算子につい

    Windows ストア アプリで重要な非同期プログラミング(C#)について復習 - かずきのBlog@hatena
  • [VS2012] async/await のパフォーマンスの注意点

    前の記事 で紹介した 「What’s New for Parallelism in Visual Studio 2012 RC」 の補足記事が来てました。 「Performance consideration for Async/Await and MarshalByRefObject」 これ、個人的にはものすごく重要なことのような気ガス 前の記事にあった StreamReader.ReadLineAsync メソッドが 3倍速くなったとかはどういうことなのか? 詳しくは上の記事を読んでもらった方がいいと思いますが、ざっくりと説明します。 上記の記事からコードの重要な部分をコピペします。 class MyObj { const int ITERS = 100000000; private int m_data; public async Task Foo1() { for (int i =

  • 非同期処理とディスパッチャー

    24日・25日とWDDに行ってたわけですが。 講演者の皆様、UIスレッドとディスパッチャーの話で苦労されてた印象。この辺りの仕組み、どうなんだろうなーとか、少し書いておこうかと。 UIスレッドに紐付いたクラス まず前提。 UIスレッド まず、GUIがらみのクラスは、単一スレッドからしかアクセスできないように作ってあります。スレッド安全に作ろうとするとパフォーマンスが出ないので、いっそのこと、UIスレッド以外からアクセスがあったら例外を出して止まるように作ってあります。 この、GUIコンポーネントと紐付いているスレッドがUIスレッドです。 エンド ユーザーからの入力なんかを受け付けているのもこのUIスレッドで、UIスレッド上で時間がかかる処理をすると、UIがフリーズします。 なので、時間がかかる処理をするときは、一度別スレッドで処理して、結果をUIスレッドに戻すというフローが必要です。 WP

    非同期処理とディスパッチャー