我的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下的代码一次运行而不是一次运行?