forEach와 유사한 메서드, 취소 확인이 누락된 ContainerUtil.process()를 보고합니다.
com.intellij.util.concurrency.annotations.RequiresReadLock 어노테이션이 있는 메서드 내에서만 실행됩니다.
예:
@RequiresReadLock
fun doSomething() {
...
for (item in items) {
ProgressManager.checkCanceled() // 첫 번째 줄에 있어야 합니다
...
}
items.forEach {
ProgressManager.checkCanceled() // 첫 번째 줄에 있어야 합니다
...
}
...
}
사이에 아무것도 없는 중첩 루프의 경우:
@RequiresReadLock
fun doSomething() {
...
for (item in items) {
// nothing in between
for (inner in item.inners) {
ProgressManager.checkCanceled() // 내부 루프 안의 첫 번째 줄에만 있어야 합니다
...
}
}
...
}
블로킹 컨텍스트에서는 com.intellij.openapi.progress.ProgressManager.checkCanceled()가 사용되어야 하며 일시 중지 컨텍스트에서는 com.intellij.openapi.progress.CoroutinesKt.checkCancelled()가 사용되어야 합니다.
상세한 정보는 IntelliJ Platform Plugin SDK 문서의 백그라운드 프로세스 취소를 참조하세요.
2023.1의 새로운 기능