問題タブ [asynchronous]
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.
apache-flex - DDD および非同期リポジトリ
RMI と JMS の両方を使用して、Java バックエンドに接続されたリッチ クライアント (Flex で記述) に取り組んでいます。クライアントを DDD 方式で実装して、ドメイン オブジェクトに対する CRUD 操作用のリポジトリを作成することを考えていました。
ただし、問題は、すべてのバックエンド通信が非同期で発生し、クライアントが応答を受信するまで強制的に続行を待機させる方法がないことです。つまり、低レベルでは、リモート オブジェクトのメソッドを呼び出すことができ、戻り値として AsyncToken を取得できます。その後、asynctoken のイベントをリッスンして、呼び出しが成功したか失敗したかを確認できます。ただし、これはリポジトリの背後にある主なアイデアを壊し、技術的な詳細をクライアントから隠します。
私が推測する2つのオプションがあるかもしれません:
- リポジトリのメソッドが asynctoken を返すようにします。これは面倒な解決策のように思えます。
- メソッドが空のコレクション (たとえば、findAll の場合) を返すようにします。このコレクションは、応答を受信したときに満たされます。
どちらも一長一短ありますので、皆様のご意見をお聞かせいただければと思います。
(これをさらに進めると、適切なキャッシュ戦略は何でしょうか?状況によっては、リポジトリからすべてのエンティティを要求するたびにリポジトリがサーバーを呼び出すことは望ましくありません。リポジトリのメソッドの署名にどのように影響しますか? )
c# - 部分型情報による非同期デリゲート呼び出しの終了
BeginInvoke/EndInvoke パターンを使用して非同期メソッドの実装を記述する場合、コードは次のようになります (これがキャッシュの非同期ラッパーであると推測しなくても済むようにするためです)。
デリゲートの型がわかっているため、キャストできるため、これは完全にうまく機能します。Put
ただし、メソッドが void を返しますが、呼び出しを終了するには、メソッドを強く型付けされたデリゲートにキャストする必要があるように見えるため、2 つのメソッドがあると面倒になり始めます。
デリゲートについて気にするのは戻り値の型 (この場合は void) だけであり、提供された引数ではないため、これを行うためのよりクリーンな方法があることを願っています。しかし、私は頭を悩ませ、オフィスの他の人に尋ねましたが、誰も答えを思いつくことができません.
1 つの解決策が custom を作成することであることはわかっていますが、これIAsyncResult
は の遅延インスタンス化などの潜在的なスレッド化の問題を伴う非常に難しい作業であり、WaitHandle
そのルートをたどるよりも、この少しハックなコードを使用したいと考えています。
is
チェックのカスケード セットなしで呼び出しを終了する方法についてのアイデアはありますか?
.net - 超並列処理に非同期デリゲートまたはThreadPool.QueueUserWorkItemを使用しますか?
バッチインポートで約300,000レコードを処理する.NETアプリケーションがあり、レコードごとに数秒かかるので、これを並列化したいと思います。ProcessWithAnsycDelegates()
次のコードでは、との違いは何ProcessWithThreadPool()
ですか?
c# - HttpWebRequest(.NET)を非同期で使用するにはどうすればよいですか?
HttpWebRequest(.NET、C#)を非同期で使用するにはどうすればよいですか?
c# - .net/C# でのネットワーキング
誰かが C#/.net 3.5 でネットワーキングを行う方法を学ぶための正しい方向を教えてくれませんか? コードサンプルと説明は大歓迎です。基本的に、非同期/マルチスレッド サーバー/クライアント モデルを実行する方法を探しています。
WinSock を使用して C++ でこれを達成する方法の基本についてはかなり満足していますが、私の研究のすべてが C# でこの概念を把握しているようには見えません。
あなたが提供できる支援に感謝します:)
multithreading - 作業スレッドからの更新 UI スレッドの呼び出しはどのように機能しますか?
一部のデータを処理しているスレッドに関数がある場合、コールバック関数を呼び出して UI のステータスを更新します。
UI がコールバック関数の処理に時間がかかる場合は、あまり役に立ちません。コールバック関数で更新を処理するだけでなく、ブロックしないように何らかのメッセージを UI に送信する必要がありますか?
つまり、処理関数で更新ステータス関数を呼び出すと、これはすぐに処理関数に返され、更新では UI 更新が完了するのを待つことができます。
または、UI への更新データの送信を処理するために 3 番目のスレッドが必要ですか?
.net - Windows GUI スレッドへのメッセージの送信
Web サービス オブジェクト (SoapHttpClientProtocol から継承) を作成し、Async メソッドを使用すると、Windows GUI スレッドでコールバックが行われることに気付きました。
- これがどのように機能するか知っている人はいますか?
- どうすれば同じことを達成できますか。
GUIスレッドでコールバックが常に発生していると確信している場合、これにより、GUIフォームでInvokeRequiredをチェックする必要がなくなると思います。
php - PHPの非同期シェルexec
シェルスクリプトを呼び出す必要があるが、出力についてはまったく気にしないPHPスクリプトがあります。シェルスクリプトは多数のSOAP呼び出しを行い、完了に時間がかかるため、応答を待機している間はPHP要求の速度を落としたくありません。実際、PHPリクエストは、シェルプロセスを終了せずに終了できる必要があります。
exec()
、、、などshell_exec()
のさまざまな機能を調べましたpcntl_fork()
が、どれも私が望むものを正確に提供していないようです。(または、もしそうなら、その方法は私にはわかりません。)何か提案はありますか?
c# - C# でのイベント ベースの非同期。一般的なリファクタリングは可能ですか?
WebClient などの一部の API は、イベント ベースの非同期パターンを使用します。これは単純に見え、疎結合のアプリ (UI の BackgroundWorker など) ではうまく機能する可能性がありますが、連鎖はあまりうまくいきません。
たとえば、非同期処理がブロックされないようにマルチスレッド化されたプログラムを次に示します。(これがサーバー アプリで行われ、何百回も呼び出されると想像してください。ThreadPool スレッドをブロックしたくありません。) 3 つのローカル変数 (「状態」) を取得し、2 つの非同期呼び出しを行い、その結果を最初に2番目のリクエストにフィードします(したがって、それらは並行して進むことができません)。状態も変化する可能性があります (簡単に追加できます)。
WebClient を使用すると、次のようになります (または、クロージャーのように動作するオブジェクトの束を作成することになります)。
}
このイベントベースの非同期パターンをリファクタリングする一般的な方法はありますか? (つまり、このような API ごとに詳細な拡張メソッドを記述する必要はありませんか?) BeginXXX と EndXXX を使用すると簡単ですが、このイベントの方法では方法がないようです。
c# - C# Web サービスでの非同期呼び出しの呼び出し
Web サービスでサードパーティのリソース (.dll) を使用しています。私の問題は、このリソースの呼び出し (メソッドの呼び出し) が非同期で行われることです。答えを得るには、イベントにサブスクライブする必要があります。私の要求。ac# Web サービスでそれを行うにはどうすればよいですか?
アップデート:
サニーの答えに関して:
Web サービスを非同期にしたくありません。