問題タブ [async-await]

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.

0 投票する
4 に答える
127600 参照

c# - WaitAllとWhenAll

非同期CTPTask.WaitAll()との違いは何ですか?Task.WhenAll()さまざまなユースケースを説明するためのサンプルコードを提供できますか?

0 投票する
1 に答える
1180 参照

c# - C# 5 非同期の書き方は?

次のシナリオがあります:
コマンドが入力されると (テスト用にはコンソール アプリケーションで、準備ができたら WebService になることを願っています)、いくつかのコードを実行し、さらにユーザー入力が必要になったらコマンドに戻ります。すぐに通訳。新しい入力が与えられたら、処理を中断したところから再開したい。これは c#5 の async-await パターンによく似ているので、試してみることにしました。私はこれについて考えていました:

私の質問は、MySettings.Calculate と MySettings.UseThis の書き方です。最初からタスクを返す方法と、2番目から準備完了を通知する方法は? Task の多くのファクトリ メソッドを試しましたが、適切なメソッドが見つかりません。助けてください!

0 投票する
3 に答える
4625 参照

c# - タスクを使用する方法はありますか将来価値Tのウェイトハンドルとして?

メソッドからのタスクリターンを使用して、後で使用可能になったときに値を返すようにします。これにより、呼び出し元は、待機を使用してブロックするか、継続をアタッチするか、待機することができます。私が考えることができる最高のものはこれです:

これに関する主な問題は、mre.WaitOne()がブロックしていることです。したがって、GetTask()を呼び出すたびに、ブロックする新しいスレッドがスケジュールされると思います。非同期でWaitHandleを待つ方法はありますか、それとも同等の機能を構築するためのヘルパーがすでにありますか?

編集:わかりました、TaskCompletionSourceは私が探しているものであり、私は自分自身の生活を困難にしているだけですか?

0 投票する
3 に答える
2587 参照

c# - すぐに次のステートメントに移動します

新しい非同期CTPビットで遊んでいますが、サーバー側またはコマンドラインプログラムだけで動作させることはできません(すべての例はWPFまたはSilverlightです)。たとえば、次のような簡単なコードです。

すぐに戻りSystem.Threading.Tasks.Task、10秒待って7を返す代わりに1 [System.Int32] `を出力します(私が期待するように)。私が行方不明になっていることは明らかなことであるに違いありません。

0 投票する
2 に答える
295 参照

asynchronous - .Netタスクと非同期CTPに関する質問

私はAsyncCTPを試していて、かなり気に入っています。しかし、ホワイトペーパーからそれを説明する質問がありました。その中で、それは言います:

(ホワイトペーパーにリストされているメソッドの例)のような非同期メソッドは、独自のスレッドでは実行されないことを理解することが重要です。

それらが独自のスレッドで実行されない場合、非同期動作はどのように機能しますか?(たとえば)UIと「await」キーワードが作成するタスクの間で既存のスレッドに多くのコンテキストスイッチがありますか?

0 投票する
2 に答える
37845 参照

c# - エラー: 「本体のないメソッドでは 'async' を使用できません」。非同期の子オーバーライドを強制する方法は?

私は、複数のクライアント オブジェクトがインターフェイスを介して特定の関数を実装することが期待されるシステムに取り組んでおり、その関数を継続で非同期に実行したいと考えています (実装が I/O バウンドであることを期待しており、すべてのクライアント オブジェクトができるだけ早くこの機能を完了するようにします)。C# "5.0" を使用して、SP1 用の Visual Studio Async CTP Refresh を使用しています。

抽象クラスの子オブジェクトで非同期動作を強制するための推奨される方法は何ですか (以下を参照)? 仮想メソッド アプローチを使用して「非同期」メソッドの使用を (明らかに) 強制することはできません。「タスク」の戻り型のみを要求できます。これは、子オブジェクトで非同期動作を要求するべきではないということですか? その場合、戻り値の型は単純に「void」にする必要がありますか?

パブリック インターフェイスは、現在のシステム設計の残念な結果ですが、それは別の問題です。明らかに、「BaseFoo」をバイパスして「IFoo」インターフェースを実装するだけの人を非同期にするように強制することはできませんでした。

コードは次のとおりです。

0 投票する
3 に答える
1086 参照

async-await - C#5 AsyncCtp BadImageFormatException

これを手伝ってください。私はAsyncCtpLibraryとC#5ctpコンパイラを使用してコンソールアプリケーションを作成しています。待っているコードを実際に実行するようになったとき、私はこれを手に入れました:

参照するdllがありませんか?

重要な新しいもの
私の失敗したメソッドは次のようになります。

Jon Skeetのアドバイスに従って、間違いを少しずつ再現しようとしましたが、今ではawait base.Execute()行がキラーであることがわかります。その行をコメントアウトすると、すべてが実行されます。そのままにしておくと、メソッドの呼び出しはすぐに失敗します(base.Execute()に到達したときではありません)。だから私はctpコンパイラが何かおかしなことをしていると思います。なんで?私は絶対に何をすべきではありませんか?バグの大きさはどれくらいですか?

古いもの:

編集:
32ビット/ 64ビットの問題に関しては、私のシステムは32ビット(仮想マシン内、気をつけてください)であり、私が知る限り、AsyncCtpLibrary.dllにはアンマネージコードが含まれていません。私のすべてのプロジェクト(クラスライブラリと単一のコンソールアプリ)には、すべて次のようなスクリーンショット
ビルドタブがあります。


編集:Fusionログビューアも確認しました。AsyncCtpLibraryはエラーなしでロードされます:

また、コンパイラで生成されたクラスのMoveNext()メソッドのILコードを確認しました。この<Execute>d__1cメソッドが参照するアセンブリ([assemblyName])は、mscorlib、System.Core、およびAsyncCtpLibraryのみです。


私は自分のdllとAsyncCtpLibraryの両方のマニフェストをチェックしました、私の言いました.corflags 0x00000003 // ILONLY 32BITREQUIRED、AsyncCtpLibraryは言いました.corflags 0x00000009 // ILONLY、これが問題になる可能性があるかどうかはわかりません。

助けてください、私はアイデアがありません!

0 投票する
2 に答える
13953 参照

c# - void による非同期例外処理

Async CTP を使用して IO 負荷の高いコンソール アプリを作成しています。しかし、私は例外に問題があります。

そして、次のことが起こります:「完了」がコンソールに書き込まれ、デバッガーで例外が発生し、続行を押しますmy program exists .
何を与える?

0 投票する
1 に答える
7234 参照

c# - Try-Catch 非同期例外

この例は「失敗」します。

つまり、「失敗」というテキストを含む例外が発生します。

次に、この回避策を試しました:

それも役に立ちませんでした。

Async CTP 更新のインストールがホースされている可能性があると思います。

このコードが期待どおりに機能するか (「失敗」ではなく「成功」)、またはそのように機能することが「想定」されていません。そうでない場合、どのように回避しますか?