Как остановить DispatchWorkItem в GCD?

Я сейчас играю сGrand Central Dispatch и обнаружил класс под названиемDispatchWorkItem, Документация кажется немного неполной, поэтому я не уверен, что правильно ее использую. Я создал следующий фрагмент и ожидал чего-то другого. Я ожидал, что товар будет отменен после звонкаcancel в теме. Но итерация продолжается по какой-то причине. Есть идеи, что я делаю не так? Код кажется хорошим для меня.

@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()
    }
}

Ответы на вопрос(2)

Ваш ответ на вопрос