問題タブ [continuewith]
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# - タスクの ContinueWith 部分でスローされた例外をキャッチする方法は?
button_click
イベントでは、非同期で時間のかかる計算を開始しますTask
。Task.ContinueWith
UI 同期コンテキストへの継続に TaskShedulerを使用して設定し、非同期計算の結果をTextbox
.
ここで、この最後の部分が次のような例外をスローするとします。
デバッグ オプション "Enable Just My Code" を有効にすると、プログラムが停止し、"Exception was unhandled by user code" という警告が表示されます。
しかし、このオプションを設定しないと、例外はどこにも消えません (プログラムのクラッシュはなく、何もありません)。
では、この例外をどこでどのように処理できますか?
編集:タグが示すように、私は.NET-4.0を使用していることに注意してください
c# - C# Tasks.ContinueWith
非同期メソッドから 2 つの異なるタスクを実行しようとしていますが、2 番目のタスクは最初のタスクが終了した場所からのみ開始する必要があります。ContinueWith を使用しようとしましたが、成功しませんでした。これは私のサンプルコードです:
コンソール出力から、タスクが同時に実行されていることに気付くかもしれません。この動作を変更することは可能ですか?
c# - continueWith 句を使用してアクションの順序付けを行うために TPL を使用する
まず、私がやろうとしていることを説明します。
コンポーネント Bを使用しているコンポーネント Aがあります。
両者の間で通信するには、イベントを使用する必要があります。
ここでの前提条件の 1 つは、コンポーネント Bを非同期で実行し、イベント ハンドラーを呼び出された順序で実行することです。
また、呼び出しのパイプをキャンセルしたい(ユーザーが要求した場合)。したがって、まだ実行されていない、呼び出されたすべてのイベント ハンドラは実行されません。
達成するためのソリューションは TPL です。私がやろうとしていることのPOCを作成しました:
このスニペットの出力があります:
1
終了
2
ご覧のとおり、実際に終了する前に終了します。Finishの後に2が表示されます。
これで前のコードを変更すると、動作します:
このスニペットの出力があります:
1
2
終了
ご存じのように、タスク宣言で continueWith ステートメントを使用する必要はありませんが、イベントが発生したときに使用します。
なぜ Task.WaitAll(t); 最初のサンプルで動作しませんか?
誰でも私を助けることができますか?
c# - この例での ContinueWith の使用方法
メソッドに渡されたリストに基づいて、必要なすべての文字列を取得するはずの次の非同期メソッドがあります。
タスクが完了したら、このメソッドの呼び出し元はどのように Task.ContinueWith() を使用して、返されたリストを処理しますか? 私はこのようなことをしたい:
c# - C#: task.continuewith でキャンセル例外をキャッチする方法
多くの方法を試しましたが、task.ContinueWith でキャンセル例外をキャッチできませんでした。ここに何か問題がありますか:
出力は次のとおりです。
キャンセル:
これは、キャンセル例外がキャッチされたことを意味しますが、例外自体は空です。私の質問は、ここでキャンセルの例外を取得する方法ですか?
ありがとう
デレク
c# - C#のEntity Frameworkデータベースプロセスメソッドの非同期待機と続行
Save
連絡先を追加/更新する方法があります。非同期メソッドを設計しました。しかし、データベースからレコードを取得できません。
親切にコードを見てください:
上記のコードでは、常に NULL を返します
要件を満たすために誰かを助けてください。
注:上記のメソッドはライブラリにあります。非同期を使用してこのメソッドを利用する方法を教えてください。
c# - ContinueWith チェーニングから生じた待機中のタスク
私は ContinueWith でタスクを連鎖させており、それらすべてを待っています。ループ内に遅延を導入すると (コメント -タスクを完了するのに十分な時間があることを意味します)、すべてのタスクが完了したことがわかりました。遅延を取り除くと、最初のメッセージのみが処理されていることがわかりました。残りのメッセージは処理されません。コードは、すべてのタスクを完了する前にメソッドを終了すると想定しています。私が間違って待っているかどうかはわかりません。
ループ内で遅延を発生させることなく、すべてのタスクを確実に完了するにはどうすればよいですか?