gpt4 book ai didi

swift - Cocoa Swift - 取消 FileManager 的任务

转载 作者:行者123 更新时间:2023-11-30 11:21:51 26 4
gpt4 key购买 nike

我有一个很重要的文件管理器功能。它将文件从 A 复制到 B。我想创建一个按钮来取消该操作。所以我写了这个:

@IBAction func onClickCancelBtn(_ sender: NSButton) {
print(oq.isSuspended)
oq.cancelAllOperations()
}



//MARK: - Sync Button
var oq = OperationQueue()
@IBAction func onClickSyncBtn(_ sender: NSButton) {

ProgressBar.doubleValue = 0

ProgressInfo.isHidden = false

CancelBtn.isHidden = false

oq.addOperation {
self.OneWayBackUp(thePlaylists: selected_playlists)
}
}

它似乎没有按我的预期工作。我做错了吗?

最佳答案

操作和操作队列的取消不是自动的。当您取消操作时,它只是设置一个标志来指示该操作已被取消。由操作的自定义代码来检查该标志并停止其自己的工作。

一般来说,如果没有线程中运行的代码的配合,停止线程(或停止线程正在执行的工作)实际上是不可行的。它会使程序状态处于损坏的配置状态(例如互斥体永久锁定)。

不幸的是,FileManager 没有提供取消其操作的方法。您必须使用较低级别的 API 来启用取消。 copyfile() 函数可能是最好的。这些文档不再在线,也不在 Xcode 文档中,但您可以使用 man copyfile 命令查看它们。

关于swift - Cocoa Swift - 取消 FileManager 的任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51181490/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com