主執行緒 DispatchQueue.main.async
背景執行緒 DispatchQueue.global().async
解決方案來源:
Swift 3學習指南:重新認識GCD應用
DispatchQueue.main.async { // 用於UI類 self.MyBtn.setImage(UIImage(named: "MyBtnImage"), for: UIControl.State.normal) }
let MY_TIMEOUT = 100 let MySimaphore = DispatchSemaphore.init( value: 0) MyThreadCreate() { hMyThread = Thread( target: self, selector: #selector( MyThreadFunc), object: nil) } MyThreadFunc() { ... DispatchQueue.global().async { //在 Thread中 用於 DispatchSemaphore類 self.MySimaphore.signal() } ... if( MySimaphore.wait(timeout: .now() + .seconds(MY_TIMEOUT)) == .success) { ... } else { ... } }
沒有留言:
張貼留言