問題タブ [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.
.net - スレッドセーフなメソッド呼び出しが機能しない
サップガイズ、
frmMain クラスに関数があり、呼び出し後にコントロールを別のものに更新します。イミディエイト ウィンドウに「?Label1.Text」と入力すると、テキスト プロパティが更新されますが、フォームを確認しても何も起こりません。コードはこんな感じ
私の bgWorker クラス:
java - URLClassLoader + loadClass +スタンドアロンプロセスでmainメソッドを呼び出しますか?Java
次のメソッドを使用して、jarファイル内のクラスを呼び出しています。
別のプロセスでこれを呼び出すことは可能ですか?では、実行中のアプリケーションと新しく呼び出されたアプリケーションに共通点はありませんか?
状況:プログラムa(クライアントアップデーター)を起動します。クライアントaからプログラムb(クライアント)を起動します
現在のコードでは、プロジェクトaとプロジェクトbのすべてのインスタンスが同じヒープスペースを共有します。プロジェクトbのすべてのインスタンスがスタンドアロンであり、プロジェクトAが終了するかどうかを気にしない状態を実現しようとしています。
c# - Control.Invokeは、非表示のShowDialogで「スタック」します
(この問題の回避策はありますが、噛まれたのは初めてではないので、何が起こっているのかを正確に理解しようとしています。)
- 私のアプリケーションから、私
ShowDialog
はフォームです。 - フォームにはボタンがあり、クリックすると別の(GUI以外の)スレッドのコードが呼び出されます。
Pushed
非GUIスレッドはReleased
、Control.Invokeを介してステータス(および)を送り返します。- フォームがを見ると
Pushed
、を呼び出しますform.Hide()
- フォーム
Released
にが表示されると、ボタンの外観が変わります。
何が起こるかというと、常にではありませんが、Gui以外のスレッドがを送信しようとして「スタック」することがありReleased
ます。例外はありませんが、Guiは「作業」を続行しますが、どちらの方向でも、非Guiスレッドとのそれ以上の通信はできません。
スレッドの(簡略化された)コールスタックは次のようになります。
に置き換えるShowDialog
と問題は解決しますが、興味深いことに、問題は改善されます(発生頻度は低くなります)が、 onShow
を実行するコードをコメントアウトしても完全には解決しません。Hide
Pushed
アップデート
nobugzのおかげで、デッドロックを発見しました(これまでデータベースでしか遭遇していませんでした)。どうやらControl.InvokeをControl.BeginInvokeに置き換えると、この問題は解決します(ステータスイベントは「スタック」することがありますが、後続のすべての通信をブロックするわけではありません)。
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 を適切に設定するにはどうすればよいですか?
助けてくれてありがとう!
c# - C#呼び出しアクションクロススレッドアクセス
あいさつ、プログラミングは初めてです。
現在、私のアプリケーションはデリゲートを使用して、別のクラス/オブジェクトに存在するメソッドを処理/実行しています。
しかし、私は彼らが別々のスレッドに住んでいるというエラーを受け取っていました。だからウェブを検索した後、私はこれを思いついた:
これはうまく機能しました。何が起こっているのかわかりません。コードを貼り付けたところ、機能しました。
現時点では、コンパイラがこのアクション内で> <!=操作を実行できないと言っているため、これを別の方法で実行する必要があります。
これを実装するための最良の方法についてアドバイスしてください。
どうもありがとうございます。
c# - BeginInvokeの問題(デリゲートはアクションを実行しません)
あなたが元気であることを願っています。
私はBeginInvokeで奇妙な問題に直面しています、そして私は本当にあなたの助けが必要です!
Reportタイプの複数のインスタンスを含むReportingクラスがあります
これはフォームに表示されるユーザーコントロールであり、これと同じユーザーコントロールがWindowsサービスからも使用され、毎分レポートを生成(および画像として保存)されます。
毎分レポートを生成するために、私はSystem.Threading.Timerを使用しています。
レポートを生成する私のクラスは、サービスで次のようになります。
}
ほとんどすべてがうまく機能しています..CreateReportがThreadPoolの他のスレッドで実行されることもあります。したがって、レポートとそのコンポーネント(他のスレッドで作成されたもの)に対していくつかのアクションを実行している場合、InvokeRequiredはtrueに設定され、完全に明白です...しかし、BeginInvokeはアクションを実行しません!レポートが作成されたスレッドがもう存在しないようなものです...
この問題を回避する方法について何かアイデアはありますか?
私がこの問題に直面しているのは今から1週間で、グーグルでスタックオーバーフローしました。しかし、何もありません!
どうもありがとう !
forms - イベントハンドラは現在のオブジェクトをパラメータとして取ることができますか?
Windows フォームでコントロールを作成したスレッドとは別のスレッドでイベントがトリガーされる場所を読みました。
したがって、イベント ハンドラーはコントロールを直接更新することはできません (ボタンの色の変更など)。
Invoke または BeginInvoke が必要であるという説明を読みました。
私の質問: イベント ハンドラーに「this」を引数として渡すことができないのはなぜですか。
「これ」は、色を変更したいボタンを持つコントロールを持つフォームです!! ;)
デリゲートが「これ」を取ることができる例を見たことがあると断言できますが、そうではないかもしれません...
java - リフレクションを使用して jar を実行するときの引数の問題
getMethod と invoke メソッドでリフレクションを使用して jar を実行しようとしましたが、invoke メソッドに渡された引数で問題が発生しました。
そして、私はこのエラーを受け取ります:
スタックトレースからわかるように、フォルダ「/home/user/./config」からファイル「param.xml」にアクセスしようとしています。
明らかに、「/home/user/」と「./config」の間にスペースがなければ、問題ありません。
引数を String[] args にハードコーディングし、2 番目の引数が「-c ./config/param.xml」であり、アプリが実行されているディレクトリ、つまり /home/ のように見えるという事実に混乱しています。 user/ は ./config/ と連結されますが、間にスペースが入ります ??
何が起こっているのですか?
デビッド
c# - リフレクション: パラメータを指定してメソッドを呼び出す方法
パラメータを使用してリフレクションを介してメソッドを呼び出そうとしていますが、次のようになります。
オブジェクトがターゲット タイプと一致しません
パラメータなしでメソッドを呼び出すと、正常に動作します。メソッドを呼び出すと、次のコードに基づいて、Test("TestNoParameters")
正常に動作します。ただし、 を呼び出すとTest("Run")
、例外が発生します。私のコードに何か問題がありますか?
私の最初の目的は、たとえばオブジェクトの配列を渡すことでしたpublic void Run(object[] options)
が、これは機能せず、より単純なもの、たとえば文字列を試してみましたが成功しませんでした。
c# - C# で BeginInvoke/Invoke が呼び出されたときに戻り値を取得する方法
スレッドセーフであるはずのこの小さなメソッドがあります。void ではなく戻り値が必要になるまで、すべてが機能します。BeginInvoke が呼び出されたときに戻り値を取得するにはどうすればよいですか?
編集:スレッドを続行する前に GUI からの値が必要なため、この場合、BeginInvoke は必要ではないと思います。そのため、Invoke を使用することも有効です。次の例でそれを使用して値を返す方法の手がかりはありません。
しかし、そのコードを使用して値を取得する方法もわかりません;)