Đây là câu hỏi đầu tiên của tôi về StackOverflow (xin lỗi về tiếng anh của tôi). Tôi sẽ cố gắng giải thích vấn đề cũng như tôi có thể.Vấn đề SWT với syncExec()
Tôi có một ứng dụng swt với một ứng dụng ngọc bích tiền cảnh trong đó tôi có một thanh tiến trình để thông báo thời lượng của ứng dụng. Để làm mới thanh tiến trình này, tôi sử dụng:
if(Display.getCurrent() != null) {
progress.run();
}
else {
sShell.getDisplay().syncExec(progress);
}
Progress là:
Runnable progress = new Runnable() {
public void run() {
if (progressBar.isDisposed())
return;
int percentage= (numStep*100)/maxSteps;
progressBar.setSelection(percentage);
if (numStep >= maxSteps){
label1.setText("The simulation has been completed.");
button.setEnabled(true);
}
}
};
tôi cố gắng phân tích thời gian mà Runnable này mất và nó là hằng số, nhưng khi tôi phân tích dòng này sSehll.getDisplay().syncExec(progress)
mất thời điểm khác nhau (từ 0ms để XXXXms)
tôi đã đọc
syncExec (Runnable Runnable) caus này es thread hiện tại (nếu nó khác với thread giao diện người dùng của màn hình) để chờ cho runnable để kết thúc.
Nhưng Runnable là hằng số thời gian ...
Ai đó có thể hướng dẫn cho tôi? Tôi không hiểu tại sao đôi khi mất 3 phút và một thời gian khác.
Cảm ơn
+1, chào mừng bạn đến với StackOverflow! Tôi đã định dạng lại mã của bạn cho bạn, nhưng không cần phải xin lỗi tiếng Anh của bạn :) –
Cảm ơn bạn. Tôi biết điều này ngồi lâu rồi, nhưng cuối cùng tôi cũng được khuyến khích tham gia. – Michel