ユーザインタフェースを操作する処理を一定時間ごとに繰り返し行いたい場合,スレッドを使うのが一般的である。しかし,普通に自前で生成したスレッドからはSWTのUIコンポーネントを操作することができないために,DisplayクラスのsyncExec()やasyncExec()を使用する必要がある。ある間隔を持って処理を繰り返し行う場合は,Thread.sleep(500)というようにしてスレッドの実行を停止させることが思いつく方法だが,SWTではOSのタイマーイベントを使用する方法が提供されている。 OSが持つタイマーイベントを利用するには,DisplayクラスのtimerExecメソッドを使用する。 Runnable runnable = new Runnable() { public void run() { // 繰り返し行いたい処理 Display display = ...; if (
![UIスレッドでのタイマー実行 - Eclipseプラグイン開発](https://cdn-ak-scissors.b.st-hatena.com/image/square/b687729beccea7a12598794ab44de91d0f77f0e8/height=288;version=1;width=512/http%3A%2F%2Fyoichiro.cocolog-nifty.com%2F.shared-cocolog%2Fnifty_managed%2Fimages%2Fweb%2Fogp%2Fdefault.png)