問題タブ [executioncontext]

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 投票する
1 に答える
260 参照

.net - ExecutionContext クラスは「コンテキスト」とどのように関連していますか?

コンテキストは、特別なニーズを持つオブジェクトのドメイン内に細分化された「コンテナー」を作成します (または、特別なニーズを持たないオブジェクトの場合は、デフォルトのコンテキストが使用されます)。

ExecutionContext クラスがこれらのコンテキストにどのように関連しているかを理解するのに苦労しています。

それらはどのように関連しているか、または異なっているかなど?

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

.net - .NET ExecutionContextは実際にどのように機能しますか?

.NETFrameworkのバージョン4.0以降でExecutionContextが実際にどのように機能するかを調べようとしています。ドキュメントには、Thread.Startおよびほとんどのスレッドプール操作を使用する場合、マネージドプリンシパル、同期、ロケール、およびユーザーコンテキストがすべて新しいスレッドに流れると記載されています。しかし、私はこれが実際に機能しているのをまったく見ることができません。

これは、新しいスレッドを開始するときに同期コンテキストとマネージドプリンシパルが流れるかどうかをテストする単純なコンソールアプリケーションです...

結果は...

したがって、同期コンテキストはフローせず、マネージドプリンシパルは、指定しない場合でも常にフローします。基本的に、ドキュメントは完全に間違っています。では、ExecutionContextが実際に何をするのか、そしてなぜそれが役立つのかについての説明はありますか?

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

.net - TPLで、実行コンテキストをオーバーライドするにはどうすればよいですか?

新しいタスクオブジェクトを作成するときに実行コンテキストをオーバーライドするにはどうすればよいですか?以前にExecutionContext.Captureを使用してキャプチャしたものを使用したいと思います。

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

javascript - JavaScript のスコープと実行コンテキスト

JavaScript スコープ ルールを理解しようとしています。私が教科書やドキュメンテーションで読んだことは紛らわしいです。

JavaScript は静的 (または字句) スコープの言語のようです。変数名を変数 (定義) にバインドしようとすると、コードの字句構造が使用されます。

実行コンテキストは、コール スタックのスタック フレームに似ているようです。各実行コンテキストには、(関連する関数の) すべてのローカル変数が定義される変数オブジェクトがあります。これらの変数オブジェクトは、スタックの一番上にある変数オブジェクトからスタックの一番下にある変数オブジェクト (ウィンドウ オブジェクト) への「スコープ チェーン」を提供するために互いにリンクされています。このスコープ チェーンは、変数名を変数にバインドする際に上から下に検索されます。これは、C/C++/Java などの静的スコープの言語に非常に似ています。

C/C++/Java に関して重要な違いが 1 つあります。次の例に示すように、スタック フレームがコール スタック上にない関数で定義された変数にアクセスできます。

私はこれを正しく理解していますか?他に注意すべき問題はありますか?

前もって感謝します

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

c# - ASP.NET Web API を使用すると、私の ExecutionContext は非同期アクションで流れません

ExecutionContext の背後にあるメカニズムを理解するのに苦労しています。

私がオンラインで読んだことから、セキュリティ (スレッド プリンシパル)、カルチャなどのコンテキストに依存する項目は、実行単位の作業の範囲内で非同期スレッド間を流れる必要があります。

ただし、非常に紛らわしく、潜在的に危険なバグに遭遇しています。スレッドの CurrentPrincipal が非同期実行中に失われていることに気付きました。


ASP.NET Web API シナリオの例を次に示します。

最初に、テスト用に 2 つの委任ハンドラーを使用して単純な Web API 構成をセットアップしましょう。

スレッドのプリンシパルと、コンテキスト全体で共有されるデータの一部 (要求の相関 ID) を設定する最初の「DummyHandler」を除いて、デバッグ情報を書き出して要求/応答を渡すだけです。


十分に単純です。次に、ファイルをアップロードするかのように、HTTP POST を処理する単一の ApiController を追加しましょう。


Fiddler でテストを実行すると、次のような出力が表示されます。


さらに混乱させるために、 async 行に次の行を追加すると、次のようになります。

私は今、この出力を受け取ります:

ここでのポイントはこれです。async my に続くコードは、実際にはビジネス ロジックを呼び出すか、単にセキュリティ コンテキストを適切に設定する必要があります。整合性の問題が発生する可能性があります。

何が起こっているのかを明らかにするのを手伝ってくれる人はいますか?

前もって感謝します。

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

scala - 含まれているオブジェクト/呼び出されたメソッドに暗黙の ExecutionContext を渡す

Scala 2.10 futures を使用して非同期ライブラリを作成しています。ライブラリのコンストラクターは、特定の特性を実装する一連のユーザー定義オブジェクトを受け取り、ライブラリ クラスのメソッドがデータをユーザー定義オブジェクトに 1 つずつ送信します。ExecutionContextメイン インスタンスを設定するときにユーザーが非同期操作を提供し、必要に応じてそのコンテキストがユーザー定義オブジェクトに渡されるようにする必要があります。簡略化された (疑似?) コード:

次のように使用できます。

次のコンパイル エラーが発生しますThingProcessor

暗黙の ExecutionContext が見つかりません。自分で必要とするか、インポートしてくださいExecutionContext.Implicits.global

私の質問は、ユーザー (クラスを作成する予定のユーザー) に心配させることなく、ユーザー定義オブジェクト ( and ) またはそれらのメソッドに必要ExecutionContextなを暗黙のうちに指定するにはどうすればよいかということです。ユーザーは次のように入力する必要はありませんでした。LibraryObjectThingProcessorPassThroughProcessor

また

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

sql-server - ストアド プロシージャが呼び出されるデータベース名を取得するにはどうすればよいですか?

コード内のコメントを参照してください。

出力

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

c# - 非同期コードと TPL コードの組み合わせには実行コンテキストが必要

async/await次の方法で、同時に TPL とうまく連携する実行コンテキストを探しています (予想される動作)。

(1)仲良く遊ぶasync/await

(2)仲良く遊ぶTask.Run()

(3)待ちに待った相手と仲良く遊ぶTask

(3)必須ではありませんが、あると便利です。私は今使用していますが、手動で実行されたタスクでも、別のスレッドでのタスクの実行を強制する必要がある実行されたタスクでも、格納されている値にアクセスできるため、 (2)CallContextで失敗します。Task.Factory.StartNew(..., LongRunning)

それを達成する方法はありますか?

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

scala - Scala: Future の map 関数に実行コンテキストを渡す構文

この質問の以前のバージョンでは要点がつかめなかったので、要約してみました。

Futureのmap関数は、以下に示すように ExecutionContext を取ります ( API 2.10.3から取得) 。

自分の ExecutionContext を渡したいのですが、成功しません。構文が正しくないようです。

ExecutionContext を Future のマップ関数に渡すにはどうすればよいですか?

私が持っているものは次のとおりです。