91 votes

Copie de fichier non bloquante en C #

Comment copier un fichier en C# sans bloquer un thread ?

43voto

Drew Noakes Points 69288

Voici une méthode de copie de fichier asynchrone qui donne au système d’exploitation des indices que nous lisons et écrivons séquentiellement, afin qu’il puisse pré-récupérer des données sur la lecture et avoir des choses prêtes pour l’écriture:

Vous pouvez également tester la taille de la mémoire tampon. Voici 4096 octets.

17voto

GregC Points 4679

J’ai légèrement amélioré le code @DrewNoakes (performances et annulation) :

14voto

Casey Points 2456

Bien qu’il y ait certaines circonstances que vous voudriez éviter , fonctionnera. Cela vaut la peine d’être considéré car lorsqu’un fichier est simplement déplacé dans le même disque / volume, il s’agit d’une opération presque instantanée, car les en-têtes sont modifiés mais le contenu du fichier n’est pas déplacé. Les différentes méthodes asynchrones « pures » copient invariablement le flux, même lorsqu’il n’est pas nécessaire de le faire, et peuvent donc être un peu plus lentes dans la pratique.

13voto

BFree Points 46421

Il y a un bon article sur MSDN concernant les E/S asynchrones. Ils ont un exemple de code qui compare faire la même chose async vs sync.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X