Tôi hiện đang phát xung quanh với Công văn Grand Central và phát hiện ra một lớp có tên là DispatchWorkItem
. Các tài liệu có vẻ như một chút không đầy đủ vì vậy tôi không chắc chắn về cách sử dụng nó đúng cách. Tôi đã tạo đoạn mã sau và mong đợi điều gì đó khác biệt. Tôi hy vọng rằng mục sẽ bị hủy sau khi gọi số cancel
trên đó. Nhưng sự lặp lại tiếp tục vì một lý do nào đó. Bất kỳ ý tưởng những gì tôi đang làm sai? Mã này có vẻ tốt cho tôi.Làm thế nào để dừng một DispatchWorkItem trong GCD?
@IBAction func testDispatchItems() {
let queue = DispatchQueue.global(attributes:.qosUserInitiated)
let item = DispatchWorkItem { [weak self] in
for i in 0...10000000 {
print(i)
self?.heavyWork()
}
}
queue.async(execute: item)
queue.after(walltime: .now() + 2) {
item.cancel()
}
}
Cảm ơn, đó chính xác là những gì tôi đang tìm kiếm. –
Có thể DispatchWorkItem được sử dụng lại sau khi bị hủy không? – pixelfreak
@pixelfreak - Không. Tạo một tài khoản mới nếu bạn muốn bắt đầu lại. – Rob