NSOperationQueueに挿入された実行中のNSOperationを一時停止する必要があります。現在、私はすべての操作を取り消して再起動しています。しかし、これは、行われたプロセスの面で何らかの重複を招くことになります。 NSOperationQueueのsetSuspendedフラグで試しました。しかし、それは操作を中断していません。脱出はありますか?NSOperationQueueでNSOperationを一時停止するにはどうすればよいですか?
14
A
答えて
10
この参照してください。あなたが操作の実行に一時停止を発行する場合は、対応する操作キューを一時停止することができます
キュー の中断と再開:apple docsからLink
そして、ここにsetSuspended:メソッドを使用します。
キューをサスペンドしても、実行中の操作がタスクの途中で一時停止することはありません。新しいオペレーションの実行がスケジュールされないようにするだけです。ユーザが最終的にその作業を再開したいと考えているため、進行中の作業を一時停止するというユーザの要求に応じて、キューを一時停止することがあります。
3
私はこれを試していないが、私はおそらくここから始めます:
- があなたの
NSOperation
サブクラス - に
isPaused
フラグを追加し、操作のデータのコピー/移動方法を実装 - (
-main
でこの変更を監視) - 一時停止操作から新しい操作に状態を移動する新しい操作を作成
- あなたは
- が好きなら、キュー内の演算順序を並べ替えるために優先順位を調整
-main
であれば-main
からキュー
今、あなたが観察している、または特別な完了をしている場合は、他にもいくつか問題があります。単純なケースでは、このアプローチはうまくいくようです。
関連する問題
- 1. ストーリーボードを一時停止するにはどうすればよいですか?
- 2. 完全に停止せずにhostapdを一時停止するにはどうすればいいですか?
- 3. iOS:アプリが一時停止する時期を確認するにはどうすればよいですか?
- 4. Videojs:クリック時に再生/一時停止を無効にするにはどうすればよいですか?
- 5. HTML5再生終了時にビデオループを一時停止するにはどうすればよいですか?
- 6. 起動時にvimエラーメッセージを一時停止するにはどうすればよいですか?
- 7. 一時停止時にアプリ全体を再起動するにはどうすればよいですか?
- 8. ファイルに一時停止NSOperationQueueを保存する
- 9. Androidで一定時間後にMediaRecorderを停止するにはどうすればよいですか?
- 10. タイマーを一時停止および再開するにはどうすればよいですか?
- 11. mouseoutでjwplayerを一時停止するにはどうすればよいですか?
- 12. アンドロイドで最近一時停止したアクティビティを再開するにはどうすればよいですか?
- 13. XNAで再描画を一時停止するにはどうすればよいですか?
- 14. ChromeやSafariでリソースのトラッキングを一時停止するにはどうすればよいですか?
- 15. カルーセルで動画の一時停止/再生を制御するにはどうすればよいですか?
- 16. LogCatの一時停止を完全に無効にするにはどうすればよいですか?
- 17. オーディオソースとアニメーションを一度に一時停止するにはどうすればいいですか?3d
- 18. 一時停止後にアクションを実行するにはどうすればよいですか?
- 19. 再生/一時停止ボタンを非表示にするにはどうすればよいですか?
- 20. コントロールセンターの再生/一時停止ボタンを無効にするにはどうすればよいですか?
- 21. アプリケーションに一時停止/再開機能を追加するにはどうすればよいですか?
- 22. 一時停止/一時停止後に一時停止したシーン(停止していない状態)でSKActionを実行しないようにするには、一時停止/一時停止後にノードのテクスチャは変更されません。
- 23. ストーリーボードをフェードイン、一時停止、フェードアウト(コードを介して)するにはどうすればよいですか?
- 24. 現在実行中のアニメーションを一時停止するにはどうすればよいですか?
- 25. x軸上の3つのオブジェクトを一時停止するにはどうすればよいですか?
- 26. 一時停止したアクティビティのインスタンスを取得するにはどうすればよいですか?
- 27. このボールを一時停止するにはどうすればよいですか?
- 28. GCの一時停止を回避するにはどうすればよいですか?
- 29. Ghostscriptで画面に出力を一時停止するにはどうすればいいですか?
- 30. ゲームの一時停止と一時停止を[C#]のGUIで組み合わせるにはどうすればいいですか?
ありがとうございます!あなたのリンクから実装しようとしました。 NSOperation内に 'isPaused'という新しい変数を追加しました。操作を一時停止する必要があるときはいつでも、値をYESに設定します。 NSOperationの中で私は定期的に 'isPaused'の値をチェックします。私が「はい」と感じるたびに、私はループから抜け出すでしょう。しかし、私はここで深刻な問題があります。私は 'isPaused'の値をメインスレッドから設定しようとしています。これはいくつかの競合状態につながる可能性があります。競争条件を取り除く方法はありますか?メインスレッドではなく、同じスレッドでメソッドを呼び出す方法はありますか? – Advaith
@Advaith:両方のスレッドが 'isPaused'の読み書きの前にミューテックスをロックすると、レースについて心配する必要はありません。 –