タグ

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

  • 非同期:awaitを含むコードをロックするには?(AsyncLock編)[C#、VB]

    async修飾子/await演算子(VBではAsync修飾子/Await演算子、以降では省略)を使った非同期プログラミングでは、スレッド間の排他ロックにlockステートメント(VBではSyncLockステートメント)が使えない。代わりにSemaphoreSlimクラス(System.Threading名前空間)を使えば可能なのだが、コードの記述が面倒である。そこで稿では、AsyncLockクラスを使って簡潔に記述する方法を説明する。 SemaphoreSlimクラスによる排他ロック SemaphoreSlimクラスを使ってスレッド間の排他ロックを行うコードは、次のようなものだ。lockステートメントが使えない理由も含めて、詳細は「非同期:awaitを含むコードをロックするには?(SemaphoreSlim編)[C#、VB]」を参照していただきたい。 static System.Threa

    非同期:awaitを含むコードをロックするには?(AsyncLock編)[C#、VB]
  • 非同期:awaitを含むコードをロックするには?(SemaphoreSlim編)[C#、VB]

    async修飾子/await演算子(VBではAsync修飾子/Await演算子、以降は「async/await」と略す)によって、非同期プログラミングは簡潔に記述できるようになった。ところが、複数スレッド間の排他ロックを実現するために使ってきたlockステートメント(VBではSyncLockステートメント)が、await演算子(VBではAwait演算子、以降は省略)を含むコードでは使えなくなってしまったのである。async/awaitを多用するコード(特にWindowsストアアプリやWindows Phoneアプリ)を書いていて困った経験を持つ人も多いだろう。await演算子を含むコードをロックするにはどうしたらよいのだろうか? 稿では、SemaphoreSlimクラス(System.Threading名前空間)を使う方法を説明する。 従来のlock/SyncLockステートメントによる

    非同期:awaitを含むコードをロックするには?(SemaphoreSlim編)[C#、VB]
  • タスク ベースの非同期パターン (TAP): 概要 - .NET

    .NET では、新規開発に推奨される非同期設計パターンは、タスク ベースの非同期パターンです。 それは、非同期操作を表すために使用される、System.Threading.Tasks 名前空間の Task および Task<TResult> 型に基づいています。 名前付け、パラメーター、および戻り値の型 TAP では、非同期操作の開始と終了を表すために単一のメソッドが使用されます。 これは、非同期プログラミング モデル (APM または IAsyncResult) パターンとイベントベースの非同期パターン (EAP) の両方とは対照的です。 APM では、Begin と End メソッドが必要です。 EAP では、Async サフィックスを持つメソッドが必要であり、1 つ以上のイベント、イベント ハンドラー デリゲート型、および EventArg 派生型も必要です。 TAP の非同期メソッ

    タスク ベースの非同期パターン (TAP): 概要 - .NET
    Itisango
    Itisango 2019/08/18
    #dotNET #Async is difficult:“The Task-based Asynchronous Pattern (TAP) is based on the System.Threading.Tasks.Task and System.Threading.Tasks.Task<TResult> types in the System.Threading.Tasks namespace, which are used to represent arbitrary asynchronous operations.”
  • 非同期プログラミングのパターン

    .NET には、非同期操作を実行するための 3 つのパターンが用意されています。 タスク ベースの非同期パターン (TAP) 。1 つのメソッドを使用して非同期操作の開始と完了を表します。 TAP は .NET Framework 4 で導入されました。 .NET で非同期プログラミングを行う場合、これが推奨される方法となります。 C# の async キーワードと await キーワード、および Visual Basic の Async 演算子と Await 演算子により、TAP の言語サポートが追加されます。 詳細については、「タスク ベースの非同期パターン (TAP)」を参照してください。 イベント ベースの非同期パターン (EAP) は、非同期動作を提供するための、イベント ベースの従来のモデルです。 これは、Async サフィックスを持つメソッドと、1 つ以上のイベント、イベント

    非同期プログラミングのパターン
    Itisango
    Itisango 2019/08/18
    #dotNET #async is difficult:“Task-based Asynchronous Pattern (TAP), which uses a single method to represent the initiation and completion of an asynchronous operation. TAP was introduced in the .NET Framework 4. It's the recommended approach to asynchronous programming in .NET.”
  • C# 6.0で知っておくべき12の新機能

    Visual Studio 2015正式版のリリースで利用可能になったC#言語の最新バージョン「6.0」の新機能を解説する。CTP 5→正式版に合わせて改訂。 連載 INDEX 次回 → 「C# 6.0」と呼ばれているC#の最新バージョンは、Visual Studio 2015*1で利用可能になっている。 この最新バージョンでは、「.NET Compiler Platform」(コード名:“Roslyn”)と呼ばれる新しいコンパイラーが導入されており、静的解析APIの提供など、コンパイラーまわりに大きな変更が行われている。一方、言語機能に目を向けると、async/awaitという大きな機能が追加されたC# 5.0に比べると、一つ一つの新機能自体は小さい。しかし、それらはプログラムをより書きやすくするための機能なので、C#開発者にとってはやはり重要なアップデートとなっている。 そして、これら

  • TPL と従来の .NET 非同期プログラミング - .NET

    このブラウザーはサポートされなくなりました。 Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。 .NET の I/O バウンドおよびコンピュートバウンドの非同期操作には、次の 2 つの標準パターンがあります。 非同期操作が begin/end メソッドのペアによって表される非同期プログラミング モデル (APM)。 たとえば、FileStream.BeginRead と Stream.EndRead などです。 非同期操作が、<OperationName>Async および <OperationName>Completed という名前のメソッドとイベントのペアによって表される、イベント ベースの非同期パターン (EAP)。 たとえば、WebClient.DownloadStringAsync と Web

    TPL と従来の .NET 非同期プログラミング - .NET
  • C#次世代非同期処理概観 - Task vs Reactive Extensions

    1. C#次世代非同期処理概観 Task vs Reactive Extensions 2012/3/10 #riaarch Yoshifumi Kawai @neuecc 2. Profile  Name => Yoshifumi Kawai仕事は近頃はASP.NETで、あまりRIAじゃなかったり  まあ、HTML5もRIAですし!  Twitter => @neuecc  HN => neuecc  読むときは“のいえ”と読ませてます  サイトのドメイン(特に意味はない)を繋いだだけ で、識別子になればそれだけでいいと思って発音考 えてなかったので割とアレ  Microsoft MVP for Visual C#(2011/4-)

    C#次世代非同期処理概観 - Task vs Reactive Extensions
  • .NET開発者のための非同期入門 フリーズしないアプリケーションの作り方 - @IT

    連載目次 「エンド・ユーザーは、0.5秒のフリーズでストレスを感じ、3秒のフリーズはバグだと思う」。昔、冗談半分に言ってみた言葉だが、回りの反応を見るに、割とみな思っていることらしい。 特にモバイル端末向けのOSでは、応答性の悪いアプリケーションはOSによって強制終了されたり、マーケットプレイスでの審査に落ちたりする。フリーズしないアプリケーション作りがますます重要になっている。 そこで、稿では、フリーズしないアプリケーション作りに必要となる「非同期処理」*1について説明していく。 *1 時間のかかるAPIに対して、そもそも非同期版しか提供しないケースが増えてきている。Windows 8の新しいWindows API(WinRT)では、50ミリ秒以上かかるAPIを、すべて非同期なメソッドとして提供するそうだ。 ■非同期処理の今までとこれから ネットワークI/Oのように待ち時間の発生する処

    .NET開発者のための非同期入門 フリーズしないアプリケーションの作り方 - @IT
  • 並列プログラミング - .NET アプリケーションの並列処理についての過去、現在、未来

    このブラウザーはサポートされなくなりました。 Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。 .NET アプリケーションの並列処理についての過去、現在、未来 Stephen Toub 過去の並列処理 スレッドの直接操作は、応答性の高いクライアント アプリケーション、並列アルゴリズム、およびスケーラブルなサーバーを実現するために、以前から開発者が採用している方法です。しかし、この手法は、デッドロック、ライブロック、ロック コンボイ、2 ステップ ダンス、競合、オーバーサブスクリプションといったアプリケーションを望ましくない状態に陥らせる温床でもありました。Microsoft .NET Framework は、その誕生以来、専用の名前空間 (System.Threading) など、同時実行アプリケーショ

    並列プログラミング - .NET アプリケーションの並列処理についての過去、現在、未来
  • 1