問題タブ [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.
f# - プレーン タスク (タスクではなく) で Async.AwaitTask を実行する方法)?
F# で C# ライブラリを使用しようとしています。ライブラリは async/await を多用します。async { ... }
F#のワークフロー内で使用したい。
Async.AwaitTask
非同期の C# メソッドで を返すことができるTask<T>
ようですが、プレーンを返すメソッドについてはどうTask
でしょうか。
おそらく、これらを変換する、Async<unit>
または変換Task
するTask<unit>
ためのヘルパーはありAsync.AwaitTask
ますか?
c# - コンストラクターを非同期にすることはできますか?
コンストラクターにデータを入力しようとしているプロジェクトがあります。
残念ながら、エラーが発生します。
修飾子
async
はこのアイテムには無効です
もちろん、標準のメソッドでラップしてコンストラクターから呼び出すと、次のようになります。
それはうまくいきます。同様に、私が古い裏返しの方法を使用する場合
それもうまくいきます。await
コンストラクター内から直接呼び出すことができないのはなぜだろうと思っていました。おそらく多くの(明白な)エッジケースとそれに対する理由があります、私は何も考えられません。説明も探し回っていますが、見つからないようです。
c# - Async-Await式が間違った結果を返す
間違った結果を返すasync-await式に問題があります。
ここで、SumAllメソッドを起動してプロパティAとBを合計したい場合、結果4が得られます。ここで6が得られます。以下に、機能しないコードを示します。
の場合、以下の方法で同じ例を実行すると、正しい結果が得られました。
ところで。最善の方法はWhenAllメソッドを使用することであることを私は知っていますが、私は学習しています。ご回答ありがとうございます
c# - 逆シリアル化と非同期/待機
私のアプリ (Windows 8 Metro) では、いくつかのオブジェクトをローカル フォルダーにシリアル化された形式で保存します。読み返す方法は次のとおりです (以下を参照)。
このメソッドを Task.Run で呼び出すと、次のオブジェクトを取得できます。
しかし、await キーワードを使用すると機能しません。メソッドの行 A (ReadObject) でスレッドが停止し、エラーや例外なしで終了します。
推奨されているように、 await / async を使用しないのでしょうか。
方法
multithreading - c#5 async / await 使用時のスレッド数の制御
c#5 で新しい async/await keyworks を使用することを検討しており、この記事を読んでいます
次の例が表示されます
おそらく、URL リストが非常に長い場合、スレッドが制御不能になる状況に陥る可能性があります。
私が知りたいのは、使用されるスレッドの数を制御するための推奨される方法です。スレッドプールまたは最大数を指定する方法はありますか?
TPL を使用すると、オプションを使用してスレッドの最大数 ParallelOptions.MaxDegreeOfParallelism を制御できます。おそらく、 await と Task を組み合わせる何らかの方法が可能かもしれません。
c# - .NET用のWebBrowserクラスの非同期/待機実装
長年の読者、初めてのポスターはこちら。
私の目標は、WebBrowserクラスの使用中にasync/awaitを利用できるようにすることです。WebBrowser.Navigate(string url)は非同期メソッドであるため、LoadCompleteイベントが発生するまでhtmlドキュメントを調べることはできません。
これまでの私の(動作中の)コードは次のとおりです。
そして、この前のクラスでは、次のものを使用できるようになりました。
しかし、これを処理するためのより効率的で適切な方法があるかどうか疑問に思っています。具体的には、ブロッキングManualResetEventを使用したTask.Factory.CreateNewです。ご入力いただきありがとうございます。
c# - コルーチン/C#5を使用したステートレスNPCスクリプトの実装が待っています
C#の新機能を使用してNPCスクリプトを実装しようとしていawait
ます。これが私の概念実証です。
あなたはこのNPC.cs
スニペットを見ることができます:
実際の例では、スクリプトはIronPythonのようなスクリプト言語で実装されます。async
将来的には/キーワードをサポートする可能性がありますがawait
、呼び出しごとに/キーワードをサポートする必要があるのは、非常に面倒で面倒です。
別のメソッドを非同期にしてawaitを実行し、スクリプトでそれを呼び出すようにしましたが、async
/のawait
動作方法により、スクリプトメソッド(Run
)は一時停止/ブロックせずに続行します。
await
コルーチンのような機能を維持しながら、スクリプトメソッドを非同期にしたり、各呼び出しの前で使用したりする必要を回避する方法はありますか?
また、スレッド効率を維持しながらasync
/を使用するよりも、これに対してすでに利用可能なより良い解決策がある場合は、それを強調してください。await
ありがとう!
c# - 非同期拡張機能を使用して GUI にリスナー (サブスクリプション) を実装する
これは、私が使用しようとしている非同期応答を持つ 3 層アプリケーションのモデルです。
- GUI
- バックエンド
- リモートサーバー
GUI:
バックエンド (内部変数binReaderおよびconnection を使用)
ここで、RegisterResponse は < Key, Action > のペアをスレッドセーフなディクショナリに追加します。別のワーカー スレッドがネットワーク ストリーム メッセージ (メッセージ ヘッダー) から読み取り、メッセージ ヘッダーにある文字列 cmd に従ってアクションを呼び出します。
今質問:
- 定期的な更新 (単一のコールバックではない) のために GUI 要素をサブスクライブする必要がある場合、同じレベルの簡潔さに到達することは可能ですか?
c# - Async await キーワードは ContinueWith ラムダと同等ですか?
私が Async await キーワードを正しく理解しているかどうかを誰かが確認してくれませんか? (CTP のバージョン 3 を使用)
これまでのところ、メソッド呼び出しの前に await キーワードを挿入すると、基本的に A. 即時リターンが作成され、B. 非同期メソッド呼び出しの完了時に呼び出される「継続」が作成されるという 2 つのことが行われることがわかりました。いずれにせよ、継続はメソッドのコード ブロックの残りの部分です。
だから私が疑問に思っているのは、これら2つのコードは技術的に同等であり、もしそうなら、これは基本的にawaitキーワードがContinueWith Lambdaを作成することと同じであることを意味します(つまり、基本的にはコンパイラのショートカットです)? そうでない場合、違いは何ですか?
VS