問題タブ [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 投票する
3 に答える
2030 参照

.net - スレッドセーフなメソッド呼び出しが機能しない

サップガイズ、

frmMain クラスに関数があり、呼び出し後にコントロールを別のものに更新します。イミディエイト ウィンドウに「?Label1.Text」と入力すると、テキスト プロパティが更新されますが、フォームを確認しても何も起こりません。コードはこんな感じ

私の bgWorker クラス:

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

java - URLClassLoader + loadClass +スタンドアロンプ​​ロセスでmainメソッドを呼び出しますか?Java

次のメソッドを使用して、jarファイル内のクラスを呼び出しています。

別のプロセスでこれを呼び出すことは可能ですか?では、実行中のアプリケーションと新しく呼び出されたアプリケーションに共通点はありませんか?

状況:プログラムa(クライアントアップデーター)を起動します。クライアントaからプログラムb(クライアント)を起動します

現在のコードでは、プロジェクトaとプロジェクトbのすべてのインスタンスが同じヒープスペースを共有します。プロジェクトbのすべてのインスタンスがスタンドアロンであり、プロジェクトAが終了するかどうかを気にしない状態を実現しようとしています。

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

c# - Control.Invokeは、非表示のShowDialogで「スタック」します

(この問題の回避策はありますが、噛まれたのは初めてではないので、何が起こっているのかを正確に理解しようとしています。)

  • 私のアプリケーションから、私ShowDialogはフォームです。
  • フォームにはボタンがあり、クリックすると別の(GUI以外の)スレッドのコードが呼び出されます。
  • Pushed非GUIスレッドはReleased、Control.Invokeを介してステータス(および)を送り返します。
  • フォームがを見るとPushed、を呼び出しますform.Hide()
  • フォームReleasedにが表示されると、ボタンの外観が変わります。

何が起こるかというと、常にではありませんが、Gui以外のスレッドがを送信しようとして「スタック」することがありReleasedます。例外はありませんが、Guiは「作業」を続行しますが、どちらの方向でも、非Guiスレッドとのそれ以上の通信はできません。

スレッドの(簡略化された)コールスタックは次のようになります。

に置き換えるShowDialogと問題は解決しますが、興味深いことに、問題は改善されます(発生頻度は低くなります)が、 onShowを実行するコードをコメントアウトしても完全には解決しません。HidePushed

アップデート

nobugzのおかげで、デッドロックを発見しました(これまでデータベースでしか遭遇していませんでした)。どうやらControl.InvokeをControl.BeginInvokeに置き換えると、この問題は解決します(ステータスイベントは「スタック」することがありますが、後続のすべての通信をブロックするわけではありません)。

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

java - java.lang.reflect.Method.invoke の Object-result をキャストするときの java.lang.ClassCastException

urlClassLoader を使用して、Eclipse RCP アプリケーションから外部クラスを動的にロードします。invoke() メソッドは、自己定義型のオブジェクトを返します。

このオブジェクトをキャストしようとすると、java.lang.ClassCastException が発生します: rts.data.RTSDataSet は rts.data.RTSDataSet にキャストできません。その理由は、ここに別の ClassLoader があるためだと私には思えます。私の質問は次のとおりです: ClassLoader を適切に設定するにはどうすればよいですか?
助けてくれてありがとう!

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

c# - C#呼び出しアクションクロススレッドアクセス

あいさつ、プログラミングは初めてです。

現在、私のアプリケーションはデリゲートを使用して、別のクラス/オブジェクトに存在するメソッドを処理/実行しています。

しかし、私は彼らが別々のスレッドに住んでいるというエラーを受け取っていました。だからウェブを検索した後、私はこれを思いついた:

これはうまく機能しました。何が起こっているのかわかりません。コードを貼り付けたところ、機能しました。

現時点では、コンパイラがこのアクション内で> <!=操作を実行できないと言っているため、これを別の方法で実行する必要があります。

これを実装するための最良の方法についてアドバイスしてください。

どうもありがとうございます。

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

c# - BeginInvokeの問題(デリゲートはアクションを実行しません)

あなたが元気であることを願っています。

私はBeginInvokeで奇妙な問題に直面しています、そして私は本当にあなたの助けが必要です!

Reportタイプの複数のインスタンスを含むReportingクラスがあります

これはフォームに表示されるユーザーコントロールであり、これと同じユーザーコントロールがWindowsサービスからも使用され、毎分レポートを生成(および画像として保存)されます。

毎分レポートを生成するために、私はSystem.Threading.Timerを使用しています。

レポートを生成する私のクラスは、サービスで次のようになります。

}

ほとんどすべてがうまく機能しています..CreateReportがThreadPoolの他のスレッドで実行されることもあります。したがって、レポートとそのコンポーネント(他のスレッドで作成されたもの)に対していくつかのアクションを実行している場合、InvokeRequiredはtrueに設定され、完全に明白です...しかし、BeginInvokeはアクションを実行しません!レポートが作成されたスレッドがもう存在しないようなものです...

この問題を回避する方法について何かアイデアはありますか?

私がこの問題に直面しているのは今から1週間で、グーグルでスタックオーバーフローしました。しかし、何もありません!

どうもありがとう !

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

forms - イベントハンドラは現在のオブジェクトをパラメータとして取ることができますか?

Windows フォームでコントロールを作成したスレッドとは別のスレッドでイベントがトリガーされる場所を読みました。

したがって、イベント ハンドラーはコントロールを直接更新することはできません (ボタンの色の変更など)。

Invoke または BeginInvoke が必要であるという説明を読みました。

私の質問: イベント ハンドラーに「this」を引数として渡すことができないのはなぜですか。

「これ」は、色を変更したいボタンを持つコントロールを持つフォームです!! ;)

デリゲートが「これ」を取ることができる例を見たことがあると断言できますが、そうではないかもしれません...

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

java - リフレクションを使用して jar を実行するときの引数の問題

getMethod と invoke メソッドでリフレクションを使用して jar を実行しようとしましたが、invoke メソッドに渡された引数で問題が発生しました。

そして、私はこのエラーを受け取ります:

スタックトレースからわかるように、フォルダ「/home/user/./config」からファイル「param.xml」にアクセスしようとしています。

明らかに、「/home/user/」と「./config」の間にスペースがなければ、問題ありません。

引数を String[] args にハードコーディングし、2 番目の引数が「-c ./config/param.xml」であり、アプリが実行されているディレクトリ、つまり /home/ のように見えるという事実に混乱しています。 user/ は ./config/ と連結されますが、間にスペースが入ります ??

何が起こっているのですか?

デビッド

0 投票する
10 に答える
426155 参照

c# - リフレクション: パラメータを指定してメソッドを呼び出す方法

パラメータを使用してリフレクションを介してメソッドを呼び出そうとしていますが、次のようになります。

オブジェクトがターゲット タイプと一致しません

パラメータなしでメソッドを呼び出すと、正常に動作します。メソッドを呼び出すと、次のコードに基づいて、Test("TestNoParameters")正常に動作します。ただし、 を呼び出すとTest("Run")、例外が発生します。私のコードに何か問題がありますか?

私の最初の目的は、たとえばオブジェクトの配列を渡すことでしたpublic void Run(object[] options)が、これは機能せず、より単純なもの、たとえば文字列を試してみましたが成功しませんでした。

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

c# - C# で BeginInvoke/Invoke が呼び出されたときに戻り値を取得する方法

スレッドセーフであるはずのこの小さなメソッドがあります。void ではなく戻り値が必要になるまで、すべてが機能します。BeginInvoke が呼び出されたときに戻り値を取得するにはどうすればよいですか?

編集:スレッドを続行する前に GUI からの値が必要なため、この場合、BeginInvoke は必要ではないと思います。そのため、Invoke を使用することも有効です。次の例でそれを使用して値を返す方法の手がかりはありません。

しかし、そのコードを使用して値を取得する方法もわかりません;)