問題タブ [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# - voidを返すこととTaskを返すことの違いは何ですか?
さまざまなC#非同期CTPサンプルを見ると、を返す非同期関数とvoid
、非ジェネリックを返す非同期関数がありTask
ます。Task<MyType>
非同期操作が完了したときにaを返すことが呼び出し元にデータを返すのに役立つ理由はわかりますが、returnタイプの関数はTask
データを返しません。戻ってみませんvoid
か?
mstest - 非同期 CTP v3、MS テスト、および Thread.Sleep
Sleepを使用して、長時間実行されるタスクメソッドがあります
これは私のテストで呼び出され、正常に動作します
ただし、 async/await を使用すると、テストはすぐに失敗します
それはなぜですか?
asp.net-mvc-3 - Async CTP (バージョン 3) は ASP と併用できますか。MVC3?
上記の質問に関して矛盾する情報があるようですが、Async CTP のバージョン 3 のリリースにより、MVC3 と Async は共存できますか?
c# - 可能であれば async / await を省略すべきですか?
実行に時間がかかるメソッドがあります。DB を呼び出し、特定の計算を同期的に行います。
「await」キーワードを使用して WinForms UI から使用できるように、ラッパーを作成したいと考えています。これを行うために、別のメソッド MyResultAsync を作成します。正確にどのように書くか、私には選択肢があります:
では、どのオプションが望ましいのでしょうか?またその理由は? ご覧のとおり、違いは「async」キーワードと「await」キーワードの有無だけです。
ありがとうございました!
c# - 複数のタスクまたは IProgress部分的な完成のため?
3 つのステップで完了し、完了する前に部分的な結果を返す非同期操作を使用しています。await
もともとはイベントを使用して進行状況を通知していましたが、可能な操作 (またはそれらのチェーン)として適切にラップしたいと考えています。
正確には、Windows Phone 7 の PhotoCamera.CaptureImage メソッドであり、次の順序でイベントを発生させます (関連する結果の種類を使用)。
CaptureStarted
、私にはそれほど興味深いものではありませんCaptureThumbnailAvailable
(ストリーム)CaptureImageAvailable
(ストリーム)CaptureCompleted
(ブール値)
これどうやって包むの?現在、私は を使用してTaskCompletionSource
を呼び出しSetResult
ていCaptureCompleted
ます。サムネイルと画像が利用可能になる手順 2 と 3 については説明しません。代わりにコールバックを使用することにしました。
私の拡張方法(簡潔にするためにコードを省略):
タスクとコールバックが混在しているため、これは完全にクリーンではありません。私は知っていIProgress<T>
ます。ただし、進行状況の値は均一な型 (Stream、Stream、bool) ではありません...そして、IProgress<T>
パターンが伸びすぎませんか?
Task<T>
順番に待機している複数を使用することはオプションですが、それは、何らかの方法で強制する必要がある特定の順序を想定しています。おそらく、各タスクの結果には、メンバーとして「次の」タスクが含まれる可能性があります。
私はまだここでやや的外れだと思っています。アイデア?
c# - プロセッサの数は、ASP.NET MVC 4 Web アプリケーションの非同期スレッドのパフォーマンスに影響しますか?
私は非同期プログラミングが苦手なので、質問は低レベルかもしれません。
ASP.NET MVC 4 Dev で Async CTP を使用して、以下の非同期メソッドを作成しました。プレビュー:
コードは問題なく動作します。デスクトップ アプリ (たとえば、WPF アプリ) で同じ関数を実行すると、明確なパフォーマンスの違いが見られます。UI はブロックされず、データは利用可能になると即座に画面にプッシュされます。
しかし、Web アプリケーションでは、実際には違いがわかりません。sync と同じ関数も作成しましたが、どちらもほぼ同じです。
私が知りたいのは、次のことです。
- Intel Core 2 Duo CPU T5750 2.00GHzを搭載したマシンでこのアプリを実行しています。プロセッサの数は C# の非同期スレッドのパフォーマンスに影響しますか?
- ここで Web アプリケーションの観点から何か間違ったことをしていますか?
async-ctp - C# 5.0 の非同期ジェネリック デリゲート
イテレータを使用すると、次の一般的なデリゲートが可能です。
C# 5.0 CTP の新しい async/await を使用すると、次のように類似のデリゲートを作成できると期待しています。
この点に関して、C# 5.0 の仕様やヘルプが見つかりません。これをどのように書くことができるか、または書くことができないかどうか、そしてその理由を知っている人はいますか?
ありがとう!
c# - 非同期プログラミングの問題
最近CTPAsyncLibraryを発見し、新しい概念に慣れるためにおもちゃのプログラムを書いてみたかったのですが、問題が発生しています。
コードを書き出す必要があると思います
しかし、そうではありません。これが私が実行しているコードです:
何か案は?誰かが概念を示すいくつかの良いチュートリアルやビデオを知っていれば素晴らしいでしょう。
pattern-matching - 非同期メソッドでの「反復」
非同期CTPに関するいくつかの関連する質問:
と列挙子メソッドを使用して、イテレータブロック(
IEnumerable<T>
yield-returningT
)を反復処理できます。メソッドのアナログは何ですか?非呼び出しメソッドでedアイテムを受信して処理するにはどうすればよいですか?簡単な例を教えてください。私はそれを見ていません。GetEnumerator()
MoveNext()
Current()
async
async
await
ContinueWith()
また、この次の例の
/li>async
メソッドでMyAwaitable
は、GetAwaiter()
メソッドがあります。GetAwaiter()
を返すstring
がTHuh
そうでない場合string
、コンパイラは文句を言いません。THuh
との間にどのようなタイプの制約/期待が存在しGetAwaiter()
ますか?C#仕様ドラフトの次の行を説明してください。決して使用されない
async Task<T>
メソッドが想定されreturn
ていますか?default(T)
このルールに従わないように見えるサンプルがいくつかあります。戻り値は到達可能であり、値はデフォルトではありません。この値にアクセスできませんか?もしそうなら、なぜ厄介なアクセスできないreturnステートメントですか?
Task<T>
一部のreturn型の非同期関数ではT
、returnステートメントに暗黙的にに変換可能な式がT
必要であり、本体のエンドポイントに到達できない必要があります。
- 仕様には、「GetAwaiter、IsCompleted、OnCompleted、およびGetResultのすべてが「非ブロッキング」であることが意図されている」と記載されています。したがって、(潜在的に)長時間実行される操作をどのメソッドで定義する必要がありますか?
ありがとう!
c# - 非非同期メソッドから非同期メソッドを呼び出す
私が試した次のコードのすべてのバリエーションは機能しDoSomething() : void
ませDoSomething() : Task
ん。表示されるエラーには、 、、およびが含まれます。TaskEx.RunEx()
.GetAwaiter().GetResult()
"Start may not be called on a task with null action"
"RunSynchronously may not be called on a task unbound to a delegate"
"The task has not yet completed"
出力:
DoSomething を開始しています...
終了するには、任意のキーを押します。
PrepareAwaitable
のは後でより複雑になりますTask
。Action
このアクションが完了すると、時間がかかりますが、 (または他のフレームワークメカニズム)が x に割り当てられ、その後 y にTask
割り当てられることによって再開されると思います。"Howdy ..."
私が本当にやりたいことは、待機中のオブジェクトをインターセプトし、それらを処理し、後で制御して、結果 ( x
and y
) で継続を再開することです。しかし、私はその大きな一歩を踏み出すことができなかったので、小さな一歩から始めようとしています.