2012-12-12 4 views
0

J'ai un programme que les utilisateurs utilisent pour prendre un fichier de leur système et le déplacer sur un lecteur réseau pour le traiter et le stocker. Le mouvement lui-même fonctionne bien et tout fonctionne correctement, à moins qu'ils ne déplacent un gros fichier et pour une raison quelconque, ferme le programme tôt et arrête le processus.Barre de progression File.Move

Le code que j'utilise pour déplacer le fichier est

try { File.Move(docFilepath, docFilePathTo); } 
catch (Exception ex) 
{ 
    docName = config.autoRename(docName + docExt.ToUpper()).Split('.')[0]; 
    File.Move(docFilepath, frmMain.Scans2LF + docName + docExt.ToUpper()); 
} 

Encore une fois cela fonctionne très bien. Je me demandais s'il y avait une possibilité d'avoir une barre de progression à afficher à l'utilisateur lorsque leur fichier était réellement entièrement dans le nouvel emplacement.

J'ai recherché quelques questions qui ont un rapport semi avec ceci mais aucune réponse qui fonctionnerait pour ma situation. Changer le système pour déplacer le fichier n'est pas une option pour moi donc je suis coincé en essayant de trouver un moyen de terminer ou de terminer.

Modifier

Je peux peut-être chercher à changer les fichiers de manière sont déplacés, principal problème serait l'expliquer pour que mon patron ne pense pas que c'est une mauvaise idée de changer les choses qui fonctionnent (si les gens ne ferment pas le programme .....)

Fin Modifier

Je pensais à l'aide d'un look pour le nouveau fichier dans ce s emplacement et la taille est actuellement comme une mesure de progrès, mais je ne sais pas si cela fonctionnerait.

Merci pour toute contribution!

+4

'Changer le système pour déplacer le fichier n'est pas une option pour moi. Cela exclut à peu près toute solution qui vaudrait quelque chose. Pourquoi ne pouvez-vous pas changer la façon dont le fichier est réellement déplacé? – Servy

+0

Eh bien, si nous étions autorisés à vous donner une réponse qui aiderait, je suggère d'utiliser 'SHFileOperation' et de laisser le système montrer son interface utilisateur standard. –

Répondre

3

Si vous souhaitez utiliser la boîte de dialogue des progrès de fichiers Windows il suffit d'ajouter Microsoft.VisualBasic comme référence et utiliser le FileMove à partir de là

Microsoft.VisualBasic.FileIO.FileSystem.MoveFile("sorceFile.ext", "destFile.ext", Microsoft.VisualBasic.FileIO.UIOption.AllDialogs); 

Cela montrera la même dialogue que Widnows le fait, y compris Annuler les options etc si nécessaire.

+0

L'OP indique spécifiquement que 'Changer le système pour déplacer le fichier n'est pas une option pour moi' – Servy

+0

@Servy vérifier l'édition. "Je peux éventuellement envisager de changer la façon dont les fichiers sont déplacés ..." – cadrell0

+0

Question rapide pour tester cette méthode. Est-ce que rien ne se montrera si le fichier est petit et à peu près instantanément déplacé? – Kevin