取消并重新启动dispatch_get_global_queue

时间:2013-06-03 08:27:22

标签: ios grand-central-dispatch

我正在使用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中输入错误的值。

有没有办法可以使用新值取消并重新启动执行?

1 个答案:

答案 0 :(得分:0)

改为使用NSOperationNSOperationQueue。他们一旦开始就更有支持取消任务。

相关问题