問題タブ [invoke]

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

c# - クロススレッド操作が無効です: コントロールが作成されたスレッド以外のスレッドからアクセスされました

シナリオがあります。(Windows フォーム、C#、.NET)

  1. ユーザー コントロールをホストするメイン フォームがあります。
  2. ユーザーコントロールは、メソッドを直接呼び出すと、UserControl_Loadロードメソッドの実行中にUIが応答しなくなるなど、重いデータ操作を行います。
  3. これを克服するために、別のスレッドにデータをロードします(既存のコードをできるだけ変更しようとしています)
  4. データをロードするバックグラウンド ワーカー スレッドを使用しました。完了すると、作業が完了したことをアプリケーションに通知します。
  5. 今、本当の問題が来ました。すべての UI (メイン フォームとその子ユーザー コントロール) は、プライマリ メイン スレッドで作成されました。ユーザーコントロールのLOADメソッドでは、ユーザーコントロールのコントロール(テキストボックスなど)の値に基づいてデータをフェッチしています。

擬似コードは次のようになります。

コード 1

それが与えた例外は

クロススレッド操作が無効です: コントロールが作成されたスレッド以外のスレッドからアクセスされました。

これについてもっと知るために、グーグルで調べたところ、次のコードを使用するような提案が出てきました

コード 2

BUT BUT BUT... 振り出しに戻ったようです。アプリケーションが再び応答しなくなります。1行目のif条件の実行によるものと思われます。ロード タスクは、私が生成した 3 番目のスレッドではなく、親スレッドによって再度実行されます。

この認識が正しかったのか間違っていたのか、私にはわかりません。私はスレッド化が初めてです。

これを解決するにはどうすればよいですか? また、Line#1 if ブロックの実行の影響は何ですか?

状況は次のとおりです。コントロールの値に基づいてグローバル変数にデータをロードしたいと考えています。子スレッドからコントロールの値を変更したくありません。私は子スレッドからそれを行うつもりはありません。

したがって、対応するデータをデータベースから取得できるように、値にのみアクセスします。

0 投票する
23 に答える
991574 参照

java - メソッド名が文字列として指定された場合、Java メソッドを呼び出すにはどうすればよいですか?

2 つの変数がある場合:

のクラスを知らずにobj、 で識別されるメソッドをどのように呼び出すことができmethodNameますか?

呼び出されるメソッドにはパラメーターがなく、String戻り値があります。Java Bean のゲッターです。

0 投票する
3 に答える
33245 参照

.net - リフレクションを使用して .NET でオーバーロードされたメソッドを呼び出す方法

.NET (2.0) でリフレクションを使用してオーバーロードされたメソッドを呼び出す方法はありますか。共通の基本クラスから派生したクラスを動的にインスタンス化するアプリケーションがあります。互換性のために、この基本クラスには同じ名前の 2 つのメソッドが含まれています。1 つはパラメーター付きで、もう 1 つはパラメーターなしです。Invoke メソッドを介してパラメーターなしのメソッドを呼び出す必要があります。現在、あいまいなメソッドを呼び出そうとしていることを知らせるエラーだけが表示されます。

はい、オブジェクトを基本クラスのインスタンスとしてキャストし、必要なメソッドを呼び出すことができます。最終的にはそうなるでしょうが、今は内部の複雑さがそれを許しません。

どんな助けでも素晴らしいでしょう!ありがとう。

0 投票する
3 に答える
1444 参照

c# - C# で UI スレッドと別のスレッド間で情報を取得するのに助けが必要

ネットワーク経由で情報を受信して​​処理するサーバー アプリケーションがあります。サーバーはマルチスレッドであり、一度に複数のソケットを処理します。スレッドは、対応するコールバック関数によって連鎖された BeginInvoke および EndInvoke スタイルのメソッドを介して、私の制御なしで作成されます。

メイン GUI に加えて、現在接続されているソケットを説明するアイテムが取り込まれた ListBox アイテムを表示するフォームを作成しようとしています。したがって、私が基本的にやろうとしているのは、適切なコールバック関数が実行されているスレッドから、Add() 関数を使用して ListBox にアイテムを追加することです。Controls プロパティを介してフォーム コントロールにアクセスしています - IE:

当然のことながら、関数を呼び出すだけではありません。ここと Web で見つけたスレッド間で通信するMethodInvoker方法delegateをいくつか試しました。私のコントロールが作成されたスレッド以外のスレッドからアクセスされたことを示す同じ例外。Invoke()BeginInvoke()

何かご意見は?

0 投票する
3 に答える
1524 参照

delegates - デリゲートを介してオーバーライド可能なメソッドを実行すると、Invoke()とBeginInvoke()の動作が異なります

このコードがなぜそのように動作するのか誰かに教えてもらえますか?コードに埋め込まれたコメントを参照してください...

私はここで本当に明白な何かを逃していますか?

0 投票する
6 に答える
204385 参照

c# - Invoke() と BeginInvoke() の違いは何ですか

BeginInvoke()Invoke()areの違いは何ですか?

主にそれぞれ何に使うのか。

編集: スレッド オブジェクトの作成とその上での呼び出しBeginInvoke()と、デリゲートでの呼び出しの違いは何ですか? それとも同じものですか?

0 投票する
3 に答える
30926 参照

vb.net - VB.NETを使用して文字列名でプロパティを動的に呼び出す

私は現在、コードのセクションが次のようになっているプロジェクトに取り組んでいます。

それはしばらく続きます。コードは明らかに冗長であり、改善できるように感じます。次のようなことができるように、VB.NETのプロパティを動的に呼び出す方法はありますか?

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

c# - 「System.InvalidOperationException: オブジェクトは現在別の場所で使用されています」 - これを解決するにはどうすればよいですか?

イメージを更新しようとすると、このエラーが発生しました。クロススレッドの更新でしたが、.Invoke() を使用したので、問題ないはずです。

0 投票する
7 に答える
25922 参照

c# - WPF Dispatcher.Invoke 'ぶら下げ'

ディスパッチャーを使用して UI スレッドで呼び出しを呼び出そうとすると、WPF アプリケーションが「ハング」したり、Wait 呼び出しでスタックしたりするように見える、やや複雑な WPF アプリケーションがあります。

一般的なプロセスは次のとおりです。

  1. ボタンのクリック イベントを処理する
  2. プレゼンターと UI の新しいインスタンスを作成し、Disconnectメソッドを呼び出す新しいスレッド (STA) を作成します。
  3. 切断してから、名前という名前の UI のプロパティを設定します
  4. Name のセッターは、次のコードを使用してプロパティを設定します。

私の問題は、ディスパッチャーの呼び出しメソッドが呼び出されると、毎回ハングしているように見え、呼び出しスタックは、呼び出し実装内でスリープ、待機、または参加していることを示していることです。

それで、私が間違っていること、明らかであるかどうか、またはこのプロパティ(およびその他)を設定するためにUIスレッドを呼び出すより良い方法がありますか?

編集:解決策は、スレッド デリゲートの最後 (たとえば、作業が実行されていた場所) で System.Windows.Threading.Dispatcher.Run() を呼び出すことでした - 助けてくれたすべての人に感謝します。

0 投票する
11 に答える
6020 参照

java - Java リフレクション用の一般的な「バックエンド」ライブラリはありますか

私は現在、Java で実装された特殊なインタープリター型プログラミング言語を使用しています。言語のごく一部として、Java に呼び出しを行う機能を追加したいと考えています。リフレクションのすべての核心に飛び込む前に、Java コードをリフレクティブに呼び出す「バックエンド」部分を実行するための一般的なライブラリを誰かが知っているかどうか疑問に思っていました。

つまり、文字列 (文法を定義) を解析して Java メソッド呼び出し (またはコンストラクター、またはフィールド アクセス) を表すデータ構造にし、そのデータ構造を、呼び出しを呼び出して結果を返すこのライブラリに渡します。特に、把握したくないすべてのエッジ ケースを既に処理できるようにしたいと考えています。

  • 引数のタイプに基づいて適切なメソッドを自動的に選択します (インテリジェントな Class.getDeclaredMethod() など)。
  • 配列と通常のオブジェクト参照の区別を処理する

JVM での動的言語の実装について少し調べてみましたが、これらは一般に、私が探しているよりもはるかに複雑であるか、特定の言語に対して高度に最適化されています。

もう 1 つのオプションは、私の文法を何らかの動的言語の文字列に変換し、それを Rhino などで呼び出すことですが、それは私が探しているよりも少しオーバーヘッドが大きくなります。