我有一个没有gui的操作类。该课程基本上是数据管理。从我的主GUI中的方法调用该类。我遇到的问题是如果出现故障则向用户显示消息。我正在使用MessageDialog
,但它在运行时仍然失败。我认为问题出在壳牌上。当我尝试使用null
作为shell时。
MessageDialog.openError(null, "Printer Error Message", "Error getting print reply file.");
错误是空指针异常
MessageDialog.openError(Display.getCurrent().getActiveShell() etc
错误是空指针异常
MessageDialog.openError(Display.getDefault().getActiveShell()
错误是无效的线程访问
答案 0 :(得分:6)
您可以使用Display.syncExec
或Display.asyncExec
解决ERROR_THREAD_INVALID_ACCESS
错误。试试:
Display.syncExec(new Runnable() {
void run() {
MessageDialog.openError(Display.getDefault().getActiveShell()...
}
}
答案 1 :(得分:3)
这将做你想要的:
MessageDialog.openError(new Shell(), "Printer Error Message", "Error getting print reply file.");
只需创建一个新的Shell
并将其传递给MessageDialog
。
答案 2 :(得分:2)
很少有重要的考虑因素。
Display.getDefault().asyncExec()
或syncExce()
Display.getDefault().getActiveShell()
将其传递给。{
首先是对话框,如果是null,则创建一个并传递它。