問題タブ [method-invocation]
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# - ディスパッチャキューを理解する
DispatcherQueueを理解するのに助けが必要だと思います。
新しい作業が到着すると、ディスパッチャキューの先頭に追加され、ディスパッチャが作業項目を処理する場合は、最初から削除されます。
より一般的に言えば、作業がある場合は、キュー内にFIFO方式で格納され、作業が残っていない限り処理されます。
ここでのMSDNドキュメントは、aloop
とframe
:を参照しています。
The Dispatcher processes the work item queue in a loop. The loop is referred to as a frame.
しかし、このコンテキストでのループはどこにありますか?私にとって、ループとは何かを繰り返すものであり、最後に達すると最初からやり直します。
そして、の概念は何frame
ですか?MSDNのドキュメントによると、フレームはキュー内の作業項目のパンチですか?それが本当なら、静的メソッドはどのようDisptatcher.PushFrame()
に使用されるべきですか?
そして、最も興味深い質問は、キューの現在の状態、特にキューにあるアイテムの数を取得する方法があるかどうかです。
以前に呼び出された(したがってDispatcherキューに入れられた)メソッドが実行された後、すぐにキューから削除された場合、または別の期間内部に残った場合、それは保持されますか?
私は知っています、とても多くの質問:-)
java - 100 ナノ秒などの短い時間、Java スレッドを一時停止するにはどうすればよいですか?
Thread.sleep()は、特定のミリ秒や特定のナノ秒のように、Java スレッドをしばらく中断させることができることを知っています。しかし問題は、この関数の呼び出しによってオーバーヘッドが発生することです。
たとえば、スレッドを 100 ナノ秒中断させたい場合、Thread.sleep(0, 100)を呼び出します。このプロセスの全コストはinvocation_cost + 100 nanosceondsであり、これは私が望むよりもはるかに大きい可能性があります。どうすればこの問題を回避し、目的を達成できますか?
これが必要な理由は、シミュレーションをオフラインで行いたいからです。タスクの実行時間をプロファイリングしました。ここで、スレッドを同じ期間中断することで、この実行時間をシミュレートしたいと考えています。
ありがとう!
python - インスタンスを介したメソッドの呼び出しに失敗しました
私は完全にあきらめたこの絶対にばかげたエラーを持っています。これが私のコードです:
さて、実装に行くと....:
次のエラーが表示されます。
ruby - ハッシュアイテムをメソッドパラメータにマッピングする方法は?
次のようなオプションの引数の長いリストを持つメソッドがあります。
メソッドを呼び出して分割ハッシュをパラメーターとして渡すと、キーをメソッドパラメーターと照合することで、ハッシュ項目がパラメーターにマップされると思いました。
残念ながら、分割ハッシュを使用してメソッドを呼び出した後でローカル変数を調べると、分割配列を渡した場合に期待するものが正確に得られますが、それは私が望んでいたものではありません。
私はここで何が欠けていますか?
java - アプリケーションからノンブロッキング/非同期メソッド呼び出しを行う必要があります
重複の可能性:
非同期でWebリクエストを作成する方法
アプリケーションからノンブロッキング非同期メソッド呼び出しを行う必要があります。
呼び出す必要があるhttpurlがありますが、非同期の方法です。
例:
ただし、ターゲットURL( http://www.mypage.com )のサーバーが機能していないときにスレッドがスタックしないように、非ブロッキングまたは非同期の方法で呼び出されるメソッド。
OracleWeblogicServerの使用10.3.2
groovy - Groovy ランタイム メソッドのインターセプト
Groovy で遊んでいるのですが、なぜこのコードが機能しないのでしょうか?
代わりに印刷されるNo catch
ことを期待していますが、印刷されますCatch!
。
php - クラスメソッド引数の動的呼び出し
どのように機能するかのように、引数のインデックス付き配列をメソッドに渡すことができるようにする必要がある何かに取り組んでいますcall_user_func_array
。私は使用しますcall_user_func_array
が、それは望ましくないOOPアプローチではなく、メソッドを静的にする必要があり、ターゲットクラスのOOを壊します。
私は使用しようとしましReflectionClass
たが、役に立ちませんでした。クラスのメソッドに引数を呼び出すことはできません。コンストラクターのみです。残念ながら、これは望ましくありません。
だから私はmanページを見て見ましReflectionFunction
たが、クラスをインスタンス化し、それをメソッドにポイントしてからそれを使用する方法はありませんinvokeArgs
.
使用例ReflectionFunction
(覚えておいてください、この質問はPHP 5.4とタグ付けされているため、構文です):
これは次の場合に失敗します。
使用例ReflectionMethod
これは次の場合に失敗します。
引数がメソッドに渡されることはありません。
望ましい結果は次のとおりです。
$array
のインスタンスに渡した場合ExampleClass->exampleMethod()
、引数は 1 つだけで、配列になります。代わりに、個々の引数を取得できる必要があります。
呼び寄せる方法があれば、船の形で途中でやろうかなと思っていたReflectorFunction
のReflectorClass
ですが、無理そうです。
以前にこれを達成するために使用したものはありますか?
java - 1つのInvocationHandlerに複数のインターフェース
異なるインターフェースを持ついくつかのオブジェクトに対して1つの呼び出しハンドラー(プロキシ)を定義することは可能ですか?
このプロキシがオブジェクトに対して行うこと(すべてのチェックなど)は同じであるため(そして、それらは、プロキシ上で1か所に配置することを好むロック管理テーブルを共有します)、
それを行う方法はありますか?
ありがとう、アリアン
c# - コントロールを呼び出す拡張メソッドを作成するより良い方法は?
WinForm コントロールを呼び出すこの一般的な関数があります。
無意味なことを防ぐために、より厳しい制約を加えることで、より良いものにすることを考えています。
また、次のような冗長な入力が存在する可能性があります。
すでに is を指定しているためthis
ですbutton1
。
だから私はそれを作った:
今、私は電話する必要があります。
また
それでも、必要以上のタイピングがあるように感じます。this
isを指定している場合、ラムダ式では、どこで操作するかを伝えるためにダミー変数を再度button1
指定したくありません。c
とにかくこれをもう一度短くすることはできますか?おそらく好き
また
C#で?
c# - Windbg を使用してメモリ ダンプ内の呼び出しのターゲット スレッドを見つける
バックグラウンド
お客様から、C# アプリケーションのハングが報告されました。アプリケーションがハングした時点でメモリ ダンプがあります。メモリ ダンプは、メインの UI スレッドが進行状況フォームを表示し、複数のバックグラウンド スレッドが実行されていることを示しています。バックグラウンド スレッドの 1 つが Control.Invoke をメイン スレッドに戻してフォームを更新しようとしています。CLR スタックは次のようになります。
UI スレッドはモーダル ループにあり、メッセージを待機しています。
メッセージ キュー (私が見ることができる) 内の唯一のメッセージがペイント メッセージであることを確認しました。メッセージ 15 は WM_PAINT に対応します。
Control.MarshaledInvoke が既知のメッセージの PostMessage として実装されていることは知っています。
MSDN はPostMessageについて次のように述べています。
指定されたウィンドウを作成したスレッドに関連付けられたメッセージ キューにメッセージを配置 (投稿) し、スレッドがメッセージを処理するのを待たずに戻ります。
これは、アプリケーションのハングを引き起こすことが知られている UI オブジェクトにアクセスするバックグラウンド スレッドの典型的なケースではないかと思います。これが悪いことであることは十分承知しています。
複数のバックグラウンド スレッドがあるため、どのバックグラウンド スレッドがめちゃくちゃになったかを特定したいと考えています。
質問
メモリ ダンプ内の情報を使用して、Control.Invoke への呼び出しの宛先スレッドを特定することは可能ですか?
これまでの作業
バックグラウンド スレッドのスタック オブジェクトのダンプを取得しました。
ThreadMethodEntry と Context オブジェクトを調べてみましたが、何を探しているのかわかりません。
または、特定のスレッドへのウィンドウハンドルの関連付けを見つけることを含む、よりネイティブなアプローチがあるかもしれませんが、そうであれば、その方法がわかりません。