2013-06-03 2 views
0

dispatch_get_global_queue을 사용하여 백그라운드에서 일부 작업을 수행하고 있습니다.취소하고 다시 시작하십시오 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에 잘못된 값을 넣습니다.

새로운 값으로 실행을 취소하고 다시 시작할 수있는 방법이 있습니까?

+0

아니요, Grand Central Dispatch에서는이 기능을 사용할 수 없습니다. 프로그램 논리를 재고해야합니다. – borrrden

답변

0

대신 NSOperationNSOperationQueue을 사용하십시오. 시작한 후에는 작업 취소에 대한 지원이 더 많습니다.

관련 문제