• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SWTのStyledTextを使用したコンソールの開発)

SWTのStyledTextを使用したコンソールの開発

このQ&Aのポイント
  • SWTのStyledTextを使って、コマンドプロンプトのSWT版を作ろうと考えています。
  • 「adb shell logcat」をStyleTextから実行後すると、一度、ログの内容が出力され、そのまま待機します。その後、ログが出力されてるたびにStyleTextにログが追記されるというものです。
  • 上記の要件を満たすために、SWTのStyledTextにログの内容を追記するメソッドを作成しました。

質問者が選んだベストアンサー

  • ベストアンサー
  • PecoPlus
  • ベストアンサー率76% (144/188)
回答No.1

 こんにちは。  SWTを使ったことがないので、Swingの知識の流用なのですが・・・。  SWTも、Swingと同じ、シングルスレッド設計のようです。  つまり、Windowの描画およびイベントの実行は、ユーザーインターフェイス専用のスレッドに任されています。  イベントハンドラで長時間かかる処理や、処理待ちが発生するようなコードを書くと、そこでUI用のスレッドが止まってしまい、Windowの描画がされなくなり、Windowが固まったようになってしまいます。  今回の場合で言えば、abd.exeからの入力を待つ部分を別スレッドで処理し、SWTコンポーネントにアクセスする部分だけをDisplay#asyncExec(Runnable runnable)で、UIスレッドに委譲するようにしたらどうでしょう?

kawaby
質問者

お礼

ありがとうございます。 アドバイスを元に以下の手順で期待する動作を実現できました。 A UIを更新するスレッド B adb.exeを実行するスレッド C adb.exeの出力を監視するスレッド 1. Bを実行 2. Cを実行 3. CがBからの出力を検出 4. CがAのスレッドを呼び出しUIを更新

関連するQ&A