如何使后台任务按顺序运行?

时间:2020-07-27 02:24:17

标签: xcode macos background swift5

我的Swift 5 macOS应用出现问题,我会在后台一次执行所有任务,而不是按顺序进行。基本上,我需要解压缩一个zip文件,然后运行与那些解压缩的文件有关的shell命令。我想将这两个任务都放在后台线程中,以便应用程序不会变得没有响应。如果我将所有代码都放在后台,shell命令将在解压缩的开始之后而不是结束之后运行。有办法解决吗?我正在使用一个带有以下代码的.swift文件:

import Foundation

typealias Dispatch = DispatchQueue

extension Dispatch {

    static func background(_ task: @escaping () -> ()) {
        Dispatch.global(qos: .background).async {
            task()
        }
    }

    static func main(_ task: @escaping () -> ()) {
        Dispatch.main.async {
            task()
        }
    }
}

并使用以下代码进行调用:

Dispatch.background {
    // do stuff

    Dispatch.main { 
        // update UI
    }
}

是否有办法使Dispatch.background下的代码一次运行而不是一次运行?

0 个答案:

没有答案