gpt4 book ai didi

ios - 在继续下一个任务之前等待任务完成

转载 作者:行者123 更新时间:2023-11-28 08:13:40 25 4
gpt4 key购买 nike

我正在使用 NMSSH为了连接到服务器,然后从该服务器获取数据。但是,连接到服务器、执行命令和检索数据都需要时间才能完成。以前,我使用 sleep() 命令来允许程序暂停并让这些命令完成运行,但如果我没有指定确切的休眠时间,数据可能无法完全完成下载(由于数据大小不同,因此很难确定正确的 sleep 量)。所以在做了一些研究之后,似乎 Dispatch Groups 和 Async 操作是正确的方法。我按如下方式实现了这些:

let queue = DispatchQueue(label: "myqueue")
let group = DispatchGroup()
let myfirstconnection: SSH = SSH()
myfirstconnection.hostname = "@hostname"
myfirstconnection.username = "user"
myfirstconnection.password = "password"

queue.async(group: group) {
myfirstconnection.connectToServer()
print("1")
}
group.wait()

queue.async(group: group) {
myfirstconnection.performCommand()
print("2")
}
group.wait()

queue.async(group: group) {
myfirstconnection.retrieveData()
print("3")
}
group.wait()

queue.async(group: group) {
myfirstconnection.endSession()
print("4")
}
group.wait()

但是,这似乎无法正常工作,因为所有命令仍然同时运行。本质上我需要运行上面的每个 block ,然后等到完成后再移动到下一个 block 。

最佳答案

NMSSH 框架遵循(非常!)常见的委托(delegate)模式(例如,UIText Field View 及其来自 UIKit 框架的 UIText Field Delegate 协议(protocol);等)。因此,所有网络操作都在后台运行,并在完成后触发相应的协议(protocol)方法。

您应该实现 NMSSHSessionDelegateNMSSHChannelDelegate 协议(protocol),以便收到此类事件的通知。请记住,这样做时您的代码结构看起来会非常不同。

希望对您有所帮助 ;-)

关于ios - 在继续下一个任务之前等待任务完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43050801/

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