問題タブ [async-ctp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - .net 4 で async-await を使用する
私は現在、C# 5 の async-await 機能から多くの利益を得られるアプリケーションの作成を開始しています。しかし、どのバージョンの VS と非同期ランタイムを使用すればよいかわかりません。
OS の人気チャートを見ると、あと 3 年ほど Windows XP をサポートする必要があります。.net 4.5 は新しいバージョンの Windows でのみ動作するように見えるため、.net 4.0 をターゲットにする必要があります。開発マシンは Windows 7 を使用しているため、新しいバージョンの VS を使用しても問題ありません。
次に、これを行うためのコンパイラを最初に選択する必要があります。
- AsyncCTP を使用した VS2010
- VS2012 プレビュー (および到着したら最終版)、ターゲットを .net 4.0 に設定
- Mono (2.12 には async-await があるようです。IDE として MonoDevelop よりも VS を好む/慣れています)
コード生成のバグが少ないのはどれですか? Jon Skeet のブログを見ると、VS2012 Preview は CTP よりも決してコード ジェネレーターを使用していません。
さらに重要なのは、どのランタイムを使用するか?
VS2012 には、.net 4 で使用するための再配布可能な非同期ランタイムが含まれていますか?
AsyncCTP ランタイムを参照することで、プレビューを使用してコードをコンパイルすることができました。しかし、CTP には奇妙なライセンス条件があるため、これは長期的な解決策とは思えません。
または、サードパーティの実装を使用する必要がありますか? おそらくモノは持っていますか?
ライブラリを配布するには、何らかのインストーラーではなく、単純に dll をアプリケーションと同じディレクトリに配置することを好みます。
また、私のバイナリが mono+Linux/MacOS で変更なしで動作することも望んでいます。したがって、ランタイムは、組み込みのモノ (おそらく 2.12) と互換性があるか、Windows 以外の OS での使用を許可する必要があります。
visual-studio - Async CTP3 -- インストールは Win 7 の新しいマシンで完了しましたが、そこにはありません
誰かがこの問題を抱えていますか?Microsoft Visual Studio Async CTP 3.0 を使用してインストール プロセスを実行したところ、約 20 ~ 30 分後にインストールが完了したと表示されました。インストール直後に Windows Update を実行し、再起動しました。しかし、私のコンピューターのどこにもその兆候はありません。もう一度やり直しましたが、それでも何もありません。誰かが同様の問題を抱えていましたか? もしそうなら、解決策はありますか?
私は Win 7、Visual Studio、SP 1 など、すべての前提条件を備えています。ありがとう!
c# - .NET 3.0で非同期CTPを使用できますか?
.NET 3.0で新しいAsyncCtpLibrary.dllを使用できますか?このライブラリをレファレンスに追加すると、機能しますか?新しいプロジェクトでasync/await/task関数を使用する必要があります。
c# - 非同期CTPはポータブルライブラリで使用できますか
ポータブルクラスライブラリを備えた非同期CTPかどうかを確認しようとしていましたか?
c# - コード契約と非同期性
戻る非同期メソッドに事後条件を追加するための推奨される方法は何Task<T>
ですか?
私は次の提案を読みました:
http://social.msdn.microsoft.com/Forums/hu-HU/async/thread/52fc521c-473e-4bb2-a666-6c97a4dd3a39
この投稿では、各メソッドを同期として実装し、それを縮小してから、非同期の対応するメソッドを単純なラッパーとして実装することを提案しています。残念ながら、私はこれを実行可能な解決策とは考えていません(おそらく私自身の誤解による):
- asyncメソッドは、syncメソッドのラッパーであると想定されていますが、実際のコードコントラクトがないままであるため、必要に応じて実行できます。
- 非同期にコミットしているコードベースは、すべてに対応する同期を実装する可能性は低いです。その結果、他の非同期メソッドにsを含む新しいメソッドを実装すると、
await
結果的に非同期になります。これらのメソッドは本質的に非同期であり、同期に簡単に変換することはできません。それらは単なるラッパーではありません。
.Result
後者のポイントを使用できる、または.Wait()
代わりに使用できると言って無効にしたとしてもawait
(実際にはいくつかSyncContext
のsがデッドロックになり、とにかくasyncメソッドで書き直す必要があります)、私はまだ最初のポイントについて確信しています。
別のアイデアはありますか、それともコード契約とTPLについて私が見逃したものはありますか?
c# - asyncキーワードが存在するのはなぜですか
チャンネル9msdnビデオを閲覧すると、次の未回答のコメントが見つかり、誰かがそれを説明できることを期待していましたか?
asyncキーワードのポイントがわかりません。イテレータがIEnumerableを返すメソッドでreturnを生成できるように、メソッドがTaskを返すときはいつでもawaitキーワードを許可しないのはなぜですか。
確かに正当な理由があると思いますが、上記の提案ができなかった理由を理解したいと思います。
c# - Async CTP を使用して HTML ページを同時にダウンロードする
Async CTP を使用して HTML クローラーを作成しようとして、これを達成するための再帰のないメソッドを作成する方法に行き詰まりました。
これは私がこれまでに持っているコードです。
しかし、最初の (そして唯一の反復) を実行する時点でParallel.ForEach
アイテムが 1 つしかないため、明らかにこれは期待どおりには機能しません。再帰的に考えることができる最も簡単なアプローチですがForEach
、スタックスペースがすぐに不足するため、これを行うことはできません(私は考えていません)。
このコードを再構築する方法を教えてください。にMaxStackSize
到達するか、システムがメモリ不足になるまでアイテムを追加する再帰的な継続として説明するものを作成しますか?
.net - 非同期 CTP を使用した同期メソッドのカプセル化が機能しない
昨年、私は従来の同期メソッドと非同期メソッドを備えた Web API ライブラリを作成しました。新しいC# Async CTP 3を使用して TaskAsync メソッドを追加しようとしています。
sync メソッドをカプセル化するために、次の簡単なコードを書きました。
次に、私の WPF 4 アプリケーションから、それを使用する非同期メソッドがあります。
問題は、同期メソッドが呼び出されないことです。デバッガーは に移動しresult = await client.AuthenticateTaskAsync(username, password);
、デバッガーは作業を続行し、戻ってきません。同期内のブレークポイントがAuthenticate
壊れることはありません。UpdateStatus
呼び出されることはありません。かなり奇妙です(デバッガーの実装の問題でしたが)。
WebClient.DownloadStringTaskAsync
次に、実装方法を調べました。API クライアント メソッドを次のように変更しました。
そして今、それは機能します。最初のコードが機能しない理由を誰か説明できますか?
c# - TaskEx.Run と TaskEx.RunEx をいつ使用するか
をいつ使用するかを理解しようとしていますTaskEx.Run
。以下に書いた、同じ結果を生成する 2 つのコード サンプルを提供しました。私が見落としているのは、私がTask.RunEx アプローチを取る理由TaskEx.RunEx
です。正当な理由があると確信しており、誰かが私を記入してくれることを望んでいました.
私はそのように同じ結果を達成することができます
c# - Compact Framework 3.5 で async/await を使用する方法はありますか?
async
Compact Framework コードで C# / await
CPS 変換機能を使用する方法があるかどうかについて興味があります。それを実現するには、一定量のライブラリコードを提供/再実装する必要があると思います。もしそうなら、どのタイプ/メンバーを提供する必要があるかについての情報をどこで探すべきですか?
(ここでは完全なタスク非同期サポート ライブラリを探しているわけではありません。言語機能を使用できるようにするのに十分なスケルトンです。)