2010-03-21 16 views
1

J'essaye d'obtenir un processus de travail d'arrière-plan fonctionnant dans une application de wpf. il crée 2 fichiers puis se bloque.Ce qui ne va pas avec ma méthode de travail de fond

BackgroundWorker worker = new BackgroundWorker(); 
         worker.DoWork += delegate(object s, DoWorkEventArgs args) 
         { 
          CreateFile(i.ToString()); 
         }; 
         worker.RunWorkerAsync(); 


private void CreateFile(string fileName) 
    { 
     string path = string.Format(@"{0}\{1}.txt", directory, fileName); 
     using (StreamWriter sw = new StreamWriter(path)) 
     { 
      sw.WriteLine(fileName); 
     } 
    } 

Je reçois cette erreur « L'opération demandée ne peut être effectuée sur un fichier avec une section mappée utilisateur ouverte. » Qu'est-ce que je fais mal?

Toute aide serait grande

+2

Réponse sérieuse? À peu près tout. – Pierreten

+0

Qu'est-ce que 'i'? Ce que votre affichage ne créera qu'un seul fichier. Avez-vous plusieurs appels à RunWorkerAsync()? Pouvez-vous expliquer plus de ce que vous essayez de faire? –

+0

1. Qu'est-ce que vous essayez d'atteindre au niveau de la grande image? Il me manque un peu de contexte - comme dans comment sont créés les 2 fichiers/la valeur de la variable dir .. plus de code serait le bienvenu. 2. Pouvez-vous essayer d'identifier le chemin du fichier lorsque le plantage se produit et utiliser ProcExp pour voir quels processus contiennent des poignées au moment du plantage? – Gishu

Répondre

0

Un autre processus a ouvert le fichier, par exemple, un programme antivirus ou WordPad. Vous pouvez utiliser Process Monitor pour voir de quel processus il s'agit.