我dispatch_get_global_queue
用来在后台执行一些任务。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, (unsigned long)NULL), ^(void) {
x=someNumber;
[self dothis:x];
});
-(void)dothis:(int)x{
for (int i=0,i<x,i++){
// Some calculations
dispatch_async(dispatch_get_main_queue(), ^{
myTextview.text = [NSString stringWithFormat:@"%d",x];
});
}
}
现在,一旦我的 someNumber 更改,我想停止我的dispatch_get_global_queue
并使用新someNumber
值重新启动它。现在,一旦somenumber
值更改并且我dispatch_get_global_queue
再次调用我的值,旧的执行和新的执行有时会开始重合,在我的 textView 中放置错误的值。
有没有办法可以取消并使用新值重新开始执行?