2009-02-23 9 views
1

J'ai besoin d'un processus d'arrière-plan pour exécuter toutes les minutes. Je ne veux pas que ce processus interfère avec la réactivité du reste de l'application. Serait-ce un bon candidat pour un fil? Si oui, comment suggéreriez-vous que je mette en place le fil - en particulier, quelles classes/méthodes serait bon d'examiner?Besoin d'un processus d'arrière-plan. Fil?

Répondre

2

Cela dépend de l'étroitesse du processus d'arrière-plan. Ce serait peut-être une meilleure idée de faire un programme séparé qui fonctionne en arrière-plan.

Pour commencer, jetez un oeil à guide to threads d'Apple. La programmation multithread n'est pas pour les âmes sensibles, donc vous voudrez vous assurer de bien comprendre les idées et les mises en garde - et probablement essayer d'autres solutions en premier. Si ce "processus d'arrière-plan" n'est pas très lourd, vous pourriez presque certainement vous contenter d'utiliser une minuterie sur votre fil principal. Si ce n'est pas étroitement lié à l'interne de votre application, un programme «travailleur» pourrait être une bonne idée.

5

Cela ressemble à un bon candidat pour NSOperation et NSOperationQueue - emballez votre unité de travail comme une opération et éteignez-la si nécessaire. Pour faire le bit "toutes les minutes", NSTimer est l'option sans surprise.

0

Cela dépend vraiment de ce que fait le processus d'arrière-plan, des ressources auxquelles il a besoin d'accéder, etc. Si vous voulez juste appeler someMethod: toutes les minutes, utilisez un NSTimer. Si vous avez réellement besoin de quelque chose comme NSOperationQueue, je vous suggérerais d'examiner ce remplacement qui corrige quelques bogues dans l'implémentation actuelle.

http://www.mikeash.com/?page=pyblog/raoperationqueue-an-open-source-replacement-for-nsoperationqueue.html

+0

Apple a corrigé le bug maintenant, nous sommes libres d'utiliser NSOperationQueue une fois de plus - http://www.mikeash.com/pyblog/use-nsoperationqueue.html –