主執行緒 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
{
...
}
}
沒有留言:
張貼留言