1

現在、Eclipse プラグインを開発していますが、解決できない問題があります。次のような状況があります。

私は2つのプロセスを持っています。プロセス A はビュー (Nebula XViewer テーブルを使用) を埋めます。プロセス B は、ビューからのデータを使用します (何らかの生産者と消費者の問題が発生すると思います)。

これで、両方のプロセスを手動でトリガーできるようになりました。これは完全に正常に機能します。しかし、プロセスAを手動で開始するときにプロセスBを自動的にトリガーするオプションも必要です(Aが終了した後)。

問題は、プロセスの実行中に Plugin-Eclipse-IDE がフリーズし、ViewPart または View の更新機能を呼び出しても、プロセスが終了するまでビューが更新されないことです。これにより、プロセス B が開始される状況に陥りますが、ビュー内のデータは古く、プロセス A の最後の実行からのものではありません。

誰かがそれを修正する方法を知っていますか? コマンドの優先度を最高に設定する方法はありますか? 何か他のことをする前に、日食に強制的にビューを更新させるには?

4

1 に答える 1

1

あなたの質問の音から、ユーザー インターフェイス スレッドで実行するのに長い時間がかかるコードがあります。UI スレッドの応答性を維持する必要があるため、これにより UI がフリーズすることが保証されます。長時間実行されるコードは、EclipseJobまたはスレッドを使用してバックグラウンドで実行する必要があります。

バックグラウンドでコードを実行している場合、UI を直接更新することはできません。代わりにasyncExecまたはsyncExecメソッドを使用しDisplayて UI を更新する必要があります。

于 2016-02-02T16:30:39.640 に答える