Async tâches et des verrous

J'ai une liste d'éléments qui doivent être mis à jour par les deux processus. Premier, c'est le thread de l'INTERFACE utilisateur (contrôlée par l'utilisateur), le second est un processus d'arrière-plan qui récupère les informations à partir d'un service web.

Depuis ce second processus est dépendant des e/S, il semble approprié pour async tâches. Cela m'amène à quelques questions:

  1. Depuis async tâches ne fonctionne pas sur des threads séparés, il semble que je n'ai pas besoin de tout type de serrure lorsque la mise à jour de cette liste, de droite?
  2. D'autre part, peut-on supposer que async tâches ne sera jamais sur des threads séparés?
  3. Je parle d'une application Windows Forms. Peut-être que dans l'avenir je veux l'exécuter comme une application console. Autant que je sache, dans les applications de console Async les tâches s'exécutent sur des threads séparés. Quelle est la préférée de l'idiome de poser une tâche si elle est en cours d'exécution sur un thread séparé? De cette façon, je peux établir une serrure si nécessaire.
  4. Le fait que je ne sais pas si j'ai vraiment besoin d'un verrou qui me fait me demander si ce n'est le meilleur ou non. Serait-il judicieux de coller à Task.Run() même pour ce genre de IO lié code?
Et par processus vous voulez dire réel distinct de processus de windows, ou quoi? Si oui, comment partagez-vous votre liste entre les processus? Je suppose qu'il n'est pas vraiment un processus, mais vous devez vous assurer que... Est-ce quelque chose que l'utilisateur commence par l'interaction avec l'INTERFACE utilisateur, c'est quelque chose qui fonctionne basé sur une minuterie? C'est très important d'informations.
Il ne fonctionne pas sur une minuterie. C'est juste une fonction qui met à jour une liste très longue. Depuis la mise à jour de chaque élément comporte la connexion à un service web, la mise à jour de la liste complète peut prendre quelques secondes, voire quelques minutes.

OriginalL'auteur sapito | 2015-01-02