swift - 队列任务完成前 Swift Spinner 消失
问题描述
这让我很头疼。我试图展示一个微调器,然后在执行任务后将其移除。
不幸的是,微调器删除代码在任务完成之前执行。任何帮助,将不胜感激。
DispatchQueue.global(qos: .utility).async { [weak self] in // Create a new queue for our networking activity
guard let self = self else {
return
}
switch airframe{
case .A_10:
dcsBIOSConn.configureHawgWaypoint(name: name, lat: latitude!, long: longitude!, elev: elev, tot: timeOnTarget)
case .F_16:
dcsBIOSConn.configureWaypoint(lat: latitude!, long: longitude!, elev: elev, aircraft: airframe!)
case .F_18:
dcsBIOSConn.configureWaypoint(lat: latitude!, long: longitude!, elev: elev, aircraft: airframe!)
case .AV_8B:
dcsBIOSConn.configureWaypoint(lat: latitude!, long: longitude!, elev: elev, aircraft: airframe!)
default:
break
}
dcsBIOSConn.printMessageQueue()
print("1. Entering Queue")
let biosQueue = DispatchQueue(label: "dcs_bios")
biosQueue.async {
dcsBIOSConn.sendMessageQueueToDCSBIOS()
}
print("2. Finishing Out of Loop")
// Send the designated coord to the CDU radio.
DispatchQueue.main.async { [weak self] in // Update the spinner on the main thread.
self?.removeSpinner()
//ERProgressHud.sharedInstance.hide()
print("3. Remove Spinner")
}
}
产生这个结果
AAP_PAGE
CDU_CLR
CDU_LSK_7R
CDU_Q
CDU_E
CDU_S
CDU_H
CDU_M
CDU_LSK_3R
CDU_N
CDU_2
CDU_6
CDU_4
CDU_5
CDU_1
CDU_0
CDU_0
CDU_LSK_7L
CDU_E
CDU_0
CDU_5
CDU_5
CDU_5
CDU_3
CDU_4
CDU_5
CDU_0
CDU_LSK_9L
CDU_LSK_5L
CDU_LSK_5R
1. Entering Queue
2. Finishing Out of Loop
3. Remove Spinner
State: Preparing
Objects sent: 0
String was sent to UDP: AAP_PAGE 0
String was sent to UDP: CDU_CLR 1
String was sent to UDP: CDU_CLR 0
String was sent to UDP: CDU_LSK_7R 1
String was sent to UDP: CDU_LSK_7R 0
String was sent to UDP: CDU_Q 1
String was sent to UDP: CDU_Q 0
String was sent to UDP: CDU_E 1
标记为 1,2,3 的文本都在任务开始发送文本之前执行。3.删除文本微调器应该是最后一个。想法?
解决方案
推荐阅读
- angular - 导入时出现 TypeScript 语法错误
- asp.net-core - 如何使 .NET CORE 中的静态文件仅对授权用户可用?
- python - 基于Python中的字符串匹配将数据从原始列拆分为两个新列?
- javafx - Java FX 设置保证金
- apache-spark - 过滤 PySpark 数据框会弄乱顺序
- c - GCC 端对齐结构
- c# - 防止某些目录中的文件和文件夹被删除
- vba - Access 2007 VBA - 是否有一个变量指示是否打印了报告?
- alibaba-cloud - 使用 DIrectMail SDK 进行身份验证?
- django - 如何使forloops仅通过Django Python中的唯一值运行