2012-09-11 41 views
0

enter image description here我已經建立在下面的方式使用NSOperationQueue的方法:如何停止使用NSOperationQueue啓動的任務?

queue = [[NSOperationQueue alloc]init]; 
NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self 
                      selector:@selector(loadDataWithOperation)object:nil]; 
[queue addOperation:operation]; 
[operation release]; 

loadDataWithOperation方法我寫代碼用於打印無限號碼。

現在,我已經叫cancelAppOperations停止其執行,也是我試圖中止值設置爲YES這樣

[queue setSuspended:YES] 

即使進程仍在運行,我通過調用採礦法「停止「按鈕。它正在同一班級打電話。

我該如何阻止它?

+0

當你打電話取消,並從那裏? – shawnwall

回答

1

您可以發送取消消息的所有操作在隊列中開始執行之前,但如果你的操作已經在執行時,你需要處理的取消消息

+2

要進一步擴展此答案:NSOperation子類實例需要檢查其取消。如果您正在執行網絡操作或解析/數據庫操作,則在執行的某些點上,您需要檢查取消屬性以檢查對象是否已收到取消操作。換句話說,NSOperation不會爲你取消。這必須從NSOperation子類中完成。 – J2theC

0

這裏排隊 的暫停[隊列setSuspended:YES ]工作正常,沒有我檢查條件停止對於循環即

if(![queue isSuspended]) 
{ 
     NSLog(@"elements are :%d",i); 
} 
else 
{ 
    break; 
} 

我放置在「loadDataWithOperation」方法,這行代碼