問題タブ [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.
.net - 非同期 CTP を使用した同期メソッドのカプセル化が機能しない
昨年、私は従来の同期メソッドと非同期メソッドを備えた Web API ライブラリを作成しました。新しいC# Async CTP 3を使用して TaskAsync メソッドを追加しようとしています。
sync メソッドをカプセル化するために、次の簡単なコードを書きました。
次に、私の WPF 4 アプリケーションから、それを使用する非同期メソッドがあります。
問題は、同期メソッドが呼び出されないことです。デバッガーは に移動しresult = await client.AuthenticateTaskAsync(username, password);
、デバッガーは作業を続行し、戻ってきません。同期内のブレークポイントがAuthenticate
壊れることはありません。UpdateStatus
呼び出されることはありません。かなり奇妙です(デバッガーの実装の問題でしたが)。
WebClient.DownloadStringTaskAsync
次に、実装方法を調べました。API クライアント メソッドを次のように変更しました。
そして今、それは機能します。最初のコードが機能しない理由を誰か説明できますか?
c# - Is it ok to derive from TPL Task to return more details from method?
My original method looks like:
Method DoSomeWork
starts some work on another thread and returns execution ID (just random string). Later on I can query results by the returned execution ID. Main point is to make execution ID available before job will complete.
Now I want to change signature to return Task
, so user can wait if he want to.
At the same time I still need to return execution ID (for tracing purposes for example) and I see a few options. First, use an out
parameter, second, return tuple with both execution ID and task (in C# this looks like not a best option), and third, about which I actually want to ask.
What if I create a class that derives Task
:
Does this look ok? Or is it better to decide other options?
P.S. In BCL there are some classes derived from Task
.
UPDATE, seems I was not able to define this clear enough. But I need access to ExecutionID before the job completes so I cannot use Task.Result
.
asynchronous - C# 5 では、新しい非同期命令のユーティリティは何ですか
重複の可能性:
async キーワードが存在する理由
C# 5 - await と async の組み合わせ - await 命令を理解しています。しかし、なぜ非同期命令を書く必要があるのでしょうか? コンパイラはすべての非同期メソッドを自動的に検出できるべきではありませんか?
c# - CancellationToken を適切にリセットするには?
Async CTP
私は今朝 で遊んでいて、button
とを使った簡単なプログラムを持っていlabel
ます。をクリックするbutton
と の更新が始まりlabel
、 を停止するbutton
と への書き込みが停止しlabel
ます。CancellationTokenSource
ただし、プロセスを再開できるようにリセットする方法がわかりません。
私のコード:
c# - TaskEx.Run と TaskEx.RunEx をいつ使用するか
をいつ使用するかを理解しようとしていますTaskEx.Run
。以下に書いた、同じ結果を生成する 2 つのコード サンプルを提供しました。私が見落としているのは、私がTask.RunEx アプローチを取る理由TaskEx.RunEx
です。正当な理由があると確信しており、誰かが私を記入してくれることを望んでいました.
私はそのように同じ結果を達成することができます
c# - C#で同期メソッドから非同期メソッドを呼び出す方法は?
public async void Foo()
同期メソッドから呼び出したいメソッドがあります。これまでのところ、MSDNのドキュメントから見たのは、非同期メソッドを介して非同期メソッドを呼び出すことだけですが、プログラム全体が非同期メソッドで構築されているわけではありません。
これも可能ですか?
非同期メソッドからこれらのメソッドを呼び出す1つの例を次に示します。
ウォークスルー:AsyncとAwaitを使用してWebにアクセスする(C#およびVisual Basic)
今、私はこれらの非同期メソッドを同期メソッドから呼び出すことを検討しています。
c# - C#で「process.OutputDataReceived」イベントを「待機」する方法は?
現在、私はこのコードを持っています:
次に、この関数のユーザーは次のように機能します。
今問題は、このエラーが発生していることです:
タイプ 'System.InvalidOperationException' の初回例外が mscorlib.dll で発生しました タイプ 'System.InvalidOperationException' の未処理の例外が mscorlib.dll で発生しました
追加情報: タスクが既に完了しているときに、タスクを最終状態に移行しようとしました
を使用すると、この問題がスローされますtcs.SetResult()
。
asp.net - ASP.NET Web アプリケーションで待機操作を実行していますか?
この質問に引っ掛かりたいのですが、おそらく別の角度から言い換えてください。
詐欺防止の目的で、一定量の不正なログイン試行の後、訪問者をブロックしたいと考えています。この時点で、ログインするための実際の関数呼び出しをラップするマネージャー クラスがあります。訪問者がブロックされ、実際のログイン メソッドが呼び出されない場合、マネージャーは例外をスローします。ここまでは順調ですね。
Thread.Sleep
例外をスローする部分を一種のものに変更したいと思います。ただし、サーバーへの他のリクエストがブロックされるため、これはオプションではありません。おそらくいくつかの待機コマンドを使用するか、おそらく使用するこのシナリオの簡単な代替手段はありますか?async
F#
現在のコード:
優先コード:
c# - C#AsyncCTPからExecuteReaderAsyncを使用することの不利な点
.NETでは非同期データベース呼び出しは悪い考えであることを示す記事がいくつかあります。
C#非同期CTPには、System.Data.SqlClient.SqlCommand
と呼ばれる拡張子がありExecuteReaderAsync
ます。既存のコードに対して以下のような操作があります。
私のコードには、このような操作がいくつかあります。だから、私はそれらを非同期に変換することを考えています。
しかし一方で、私はこのアプローチにあまり魅力を感じていません(多分私は正しい方向を見ていません、誰が知っていますか!)。
それで、ここでこの新しい非同期プログラミングモデルを使用することの不利な点はありますか?
編集:
以下のようにコードをリファクタリングすると仮定します。
awaitキーワードから理解できる限り、それはその後にあるコードを継続として変換します。また、awaitキーワードをヒットすると、操作ステータスに関係なく、すぐに呼び出し元に戻ります。終了すると、戻ってきて継続コードを起動します。
これが私が考えていることです。
c# - Task.Start/Wait と Async/Await の違いは何ですか?
私は何かが欠けているかもしれませんが、行うことの違いは何ですか: