問題タブ [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 投票する
9 に答える
32571 参照

c# - catch ブロックで待機

次のコードがあります。

基本的にURLからダウンロードしたいのですが、例外で失敗した場合は別のURLからダウンロードしたいです。もちろん、両方の時間は非同期です。ただし、コードはコンパイルされません。

エラー CS1985: catch 句の本文で待機できません

OK、何らかの理由で禁止されていますが、正しいコード パターンは何ですか?

編集:

幸いなことに、C# 6.0 では、catch と finally ブロックの両方で await 呼び出しが許可される可能性があります

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

c# - 非同期 CTP のパフォーマンスが悪いのはなぜですか?

理由がよくわかりませんここでコードのパフォーマンスが改善さawaitれません。async

懐疑的ではありますが、ダウンロードが並行して行われるようにコンパイラがメソッドを書き直すはずだと思っていましたが、実際にはそうではないようです。
はそれを認識してawaitおり、async別のスレッドを作成していません。ただし、OSはダウンロードを並行して実行し、元のスレッドでコードをコールバックする必要があります-そうではありませんか?

不適切に使用しasyncていますか? awaitそれらを使用する適切な方法は何ですか?

コード:

出力:

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

c# - async と await とは何ですか? Windows 開発でいつこれらを使用しますか?

Silverlight で async というキーワードが使用されているのを常に見てきましたが、それが何であるか、いつ使用するか、およびその利点についてダミーの説明を持っている人がいるかどうか疑問に思っていました。説明できる方、よろしくお願いします。ありがとうございました。

0 投票する
6 に答える
9461 参照

c# - プロセスが現在のフォームで進行中にフォームを表示する方法

私はビジュアルスタジオ2008フレームワーク3.5にWindowsアプリケーションを持っています。プロセスがウィンドウで進行している同時待機ウィンドウが必要で、そのウィンドウに.gif画像のような動画(アニメーション)で別のフォームが表示されます。

form2 に 2 つのフォームがあり、ボタンをクリックすると長いプロセスが実行されます。form2 のプロセスが進行している間は「frmWait」が画面に表示され、終了すると消えます。「frmWait」が表示されると、ユーザーはフォーム 2 にアクセスできなくなります。

私のコードはここにあります。フォーム2

SomeWork プロシージャには、私が書いた for ループがありますが、実際には、プログラムでは sqlserver で実行されるデータベース コマンドです。クエリがサーバー上で実行されると、私のメイン プログラムの動作は、サーバーの動作が終了するまで停止し、その後、プログラムは実行ポインタを取得します。 、ソフトウェアがハングしているようです。

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

c# - async await を実現するためのタスク コードの改善

タスクを作成し、タスクが完了するのを待つスレッドを割り当ててから、UI を変更します。

これは良い習慣ですか?

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

c# - 待機可能なラムダ

キー リスナーでの動的評価

この Lambda は各行で待機する必要があります

  • keyつまり、クライアント コードは、1:A 2:W 3:A の一連のキーアップ イベントの後に SomeResponse() が呼び出されるように、評価の各行が待機されることを期待して、同じ引数で一連の評価を提供します。
  • メソッドは最後まで実行され、key == Key.W真になることはないため、明らかに現時点では決して起こりません。
  • それは不可能かもしれませんが、メソッド呼び出しが false と評価された場合は次の行から自動的に戻り、その行が true と評価されるまでそれに戻り、その後の行に続く方法はありますか?その後、メソッドの最後まで行?
  • つまり、この種の待機可能なラムダ式を提供する簡単な方法があるでしょうか?
0 投票する
5 に答える
66817 参照

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 での使用を許可する必要があります。

0 投票する
6 に答える
11915 参照

asp.net - IHttpAsyncHandlerでTaskまたはasync/awaitを使用する

スレッドを追加したいときにASP.NETアプリケーションを作成し始めてから、ASP.NETアプリケーション内でスレッドを実行する簡単な方法が3つあります。

  • を使用しSystem.Threading.ThreadPoolます。
  • カスタムデリゲートを使用し、そのBeginInvokeメソッドを呼び出します。
  • System.Threading.Threadクラスを利用してカスタムスレッドを使用する。

最初の2つの方法は、アプリケーションのワーカースレッドをすばやく起動する方法を提供します。ただし、残念ながら、 ASP.NETがHTTP要求を処理するために使用するのと同じプールからのスレッドを消費するため、アプリケーションの全体的なパフォーマンスが低下します。

次に、新しいタスクまたはasync/awaitを使用して書き込みを行いたいと思いましたIHttpAsyncHandler。あなたが見つけることができる1つの例はここでドリューマーシュが説明するものです:https ://stackoverflow.com/a/6389323/261950

My guess is that using Task or async/await still consume the thread from the ASP.NET thread pool and I don't want for the obvious reason.

Could you please tell me if I can use Task (async/await) on the background thread like with System.Threading.Thread class and not from thread pool ?

Thanks in advance for your help.

Thomas

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

c# - Async CTP を使用して HTML ページを同時にダウンロードする

Async CTP を使用して HTML クローラーを作成しようとして、これを達成するための再帰のないメソッドを作成する方法に行き詰まりました。

これは私がこれまでに持っているコードです。

しかし、最初の (そして唯一の反復) を実行する時点でParallel.ForEachアイテムが 1 つしかないため、明らかにこれは期待どおりには機能しません。再帰的に考えることができる最も簡単なアプローチですがForEach、スタックスペースがすぐに不足するため、これを行うことはできません(私は考えていません)。

このコードを再構築する方法を教えてください。にMaxStackSize到達するか、システムがメモリ不足になるまでアイテムを追加する再帰的な継続として説明するものを作成しますか?