2010-02-10 5 views
3

J'écris une application Web ASP.NET qui copiera le contenu d'un CD sur un partage réseau. Je dois vérifier périodiquement si le travail de copie est terminé.Vérification de la fin de la copie du fichier

Une façon de procéder consiste à vérifier le dossier de partage réseau pour voir si la taille du fichier a changé depuis la dernière vérification, mais cela semble plutôt douteux. Est-ce que quelqu'un a une meilleure idée de comment faire cela?

Merci à l'avance, Stijn

EDIT
plus d'explications:
Fondamentalement, je vous appelle une méthode d'action JsonResult toutes les 5 secondes, appelé getStatus (source, destination). Cette méthode doit vérifier les éléments suivants:
- si le répertoire source est encore vide, la copie ne peut pas démarrer -> retourner l'état "attente"
- si le répertoire source contient des fichiers, la copie peut démarrer -_> méthode de copie d'appel + retour état "copie"
- si le répertoire de destination contient des fichiers, et que la taille du fichier reste la même, la copie est terminée -> retour état "terminé"

Merci!

+0

Bonne question. Je le fais en suivant la dernière date de modification et en voyant si elle a changé, mais ma méthode semble aussi douteuse que la vôtre. Je suis intéressé de voir ce qui est posté. – David

+2

Clarifiez s'il vous plaît: (1) Copiez-vous le CD du côté serveur? (2) allez-vous vérifier le travail de copie du navigateur Web du client? – Dewfy

Répondre

2

Dans votre webapp, utilisez une opération de copie de fichierbloquant, comme File.Copy, mais exécuter la procédure qui fait la copie dans un thread d'arrière-plan. Dans votre thread d'arrière-plan, écrivez des informations d'état (par exemple "3 sur 9 fichiers terminés" ou "J'ai terminé!" Ou "Erreur survenue: ...") dans un objet partagé (variable statique, objet Session, base de données, .. .). Ensuite, écrivez une page Status.aspx qui montre le contenu de cet objet partagé.

0

Créer des services Web disponibles du côté javascript du client avec 2 méthodes: StartCopying, CheckStatus.

  • La mise en œuvre de StartCopying peut soit commencer à backgorund fil à copier, ou ont [SoapDocumentMethod (OneWay = true)] qui est à dire que la méthode retourne immédiatement sans attendre l'accomplissement. CheckStatus vérifie simplement ce que vous avez décrit ci-dessus et retourne à l'état client de la tâche.
Questions connexes