- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
背景
我正在通过 Eclipse PDE 开发一个插件,我在创建标记时遇到了生成太多 ResourceChangeEvents 的问题(每次调用 setAttribute(..) 和 file.createMarker(. .), 所以我想将所有代码缩减为单个更改事件)。因此,我尝试使用 IWorkspaceRunnable 对工作区的一组更改进行批处理。
问题
我想等到 workspace.run(..) 完成后再返回我的变量“MarkerField.marker_”(否则我会返回“null”)。例如,如果我使用 Eclipse 的作业管理器,我可以使用 Job.join() 让我的调用线程等待作业完成。那么,有没有办法让调用线程等待 workspace.run(..) 完成?
// Generates and returns a marker given absolute position
public static IMarker generateMarker(final IFile file, final String message, final String markerType,
final int severity, final int priority, final int start,
final int end)
throws CoreException, BadLocationException,
IOException
{
// Setting up "line" for marker generation.
final int line = ResourceUtility.convertToDocument(file).getLineOfOffset(start);
IWorkspace workspace = ResourceUtility.getWorkspace();
IWorkspaceRunnable operation = new IWorkspaceRunnable()
{
public void run(IProgressMonitor monitor) throws CoreException
{
// Marker generation code...
IMarker marker = file.createMarker(markerType);
marker.setAttribute(IMarker.MESSAGE, message);
marker.setAttribute(IMarker.PRIORITY, priority);
marker.setAttribute(IMarker.LINE_NUMBER, line + 1);
marker.setAttribute(IMarker.CHAR_START, start);
marker.setAttribute(IMarker.CHAR_END, end);
marker.setAttribute(IMarker.SEVERITY, severity);
MarkerField.marker_ = marker;
}
};
workspace.run(operation, null);
// Check/wait until the thread is finished.
return MarkerField.marker_; //I want to ensure this is non-null!
}
// Wrapper class to return marker instance in generate marker methods
// Effectively works as a pointer to a pointer
static class MarkerField
{
@SuppressWarnings("null") public static IMarker marker_;
}
最佳答案
org.eclipse.core.resources.WorkspaceJob
是 Job
的特殊版本,它包含工作区调用以减少资源更改事件的数量。为此,您覆盖 runInWorkspace
方法而不是正常的 run
。
如果你使用它,你可以使用 join
(另请参阅 JobManager.join
,它允许你等待一系列作业并有一个进度监视器)。
关于java - 如何使用 IWorkspaceRunnable 安排或加入一组更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18751551/
我正在尝试使用Jetty部署Jodd servlet。我的构建工具是Gradle。当我调用gradle jettyRun时,我得到了ClassNotFound异常。我曾尝试向运行时添加各种jar,但似
将我正在开发的插件导出为可部署功能后,我收到“未找到类”异常。 通常我将生成的Jar放在dropins文件夹中就可以使用它了。但是在使用IWorkspaceRunnable添加了似乎保存对资源的更改的
背景 我正在通过 Eclipse PDE 开发一个插件,我在创建标记时遇到了生成太多 ResourceChangeEvents 的问题(每次调用 setAttribute(..) 和 file.cre
我是一名优秀的程序员,十分优秀!