2009年4月9日木曜日

SWTで別スレッドを扱う

SWTで別スレッドで何か並列処理を行いたい場合は用途に応じて以下のように呼び出す必要がある。

同期呼び出し


Display.getCurrent().syncExec(new Runnable() {
@Override
public void run() {
// ここに処理を記述
}
});

非同期呼び出し


Display.getCurrent().asyncExec(new Runnable() {
@Override
public void run() {
// ここに処理を記述
}
});

一定時間繰り返して呼び出し


Display display = Display.getCurrent();
if (!display.isDispose()) {
display.asyncExec(new Runnable() {
@Override
public void run() {
// ここに処理を記述
Display display = Display.getCurrent();
if (!display.isDispose()) {
display.timerExec(1000, this);
}
}
});
}


[参考サイト]


UIスレッドでのタイマー実行