2016-04-08 2 views
0

このコードを使用して、バックグラウンドで自分のコードを実行できます。dispatch_queue_tメソッドをkillまたは中断する

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0ul); 
     dispatch_async(queue, ^{ 
      // Perform async operation 
      // Call your method/function here 
      // Example: 
      // NSString *result = [anObject calculateSomething]; 
      dispatch_sync(dispatch_get_main_queue(), ^{ 
       // Update UI 
       // Example: 
       // self.myLabel.text = result; 
      }); 
     }); 

しかし、私はこのバックグラウンドスレッドを中断する解決策を見つけることができません。キューを強制終了または中断する方法はありますか?

+0

具体的には、達成しようとしているものを具体的に記述してください。問題のあなたの説明から私はちょうどあなたが間違った方法で行くと言うことができます。 –

+0

@ Cy-4AH、ユーザーがHOMEボタンを押したときにスレッドを殺す必要があります – Vyacheslav

+0

誰があなたに言ったのですか?バックグラウンドタスク、フェッチなどのバックグラウンドアクティビティをリクエストした場合を除いて、システムはアプリケーションスレッドを一時停止します。 –

答えて

3

実際にNSOperationQueueを使用してコードフローを管理し、NSOperationインスタンスを作成してcancelledプロパティを尊重する必要があります。これを済ませたら、キューを簡単に中断して(将来の操作の実行を一時停止する)、任意の(またはすべての)操作を取り消すことができます。

処理をキャンセル可能にすることは、処理中のどの時点でcancelledのステータスをチェックし、それ以降の処理を中止するか決定する必要があります。

+0

簡単な例がいくつありますか? – Vyacheslav

+0

あなたがそれを以前に使っていないならば、NSOperationQueue'へのイントロガイドは確かに良い数ですが、それは答えではなくブログ投稿です... – Wain

関連する問題