2017-03-23 3 views
0

verwendet I Verwendung C# möchte mehrere Dateien in Google DriveOpenfile Ergebnisse in Datei von einem anderen Prozess wird

dies ist mein Upload-Button-Funktion

private void bt_upload_Click(object sender, EventArgs e) 
    { 
     Filedialog_init(); 


     DialogResult check_upload = MessageBox.Show("Want to upload these files ?", "Upload", MessageBoxButtons.OKCancel); 

     if (check_upload == DialogResult.OK) 
     { 
      for (int i = 0; i < result.Count; i++) 
      { 
       UploadFilesDrive(service, result[i], filePath[i], Datatype[i]); 
       tx_state.AppendText(result[i] + "Upload Done"); 
      } 
     } 
    } 

Dies ist meine Filedialog_init Funktion

hochladen
private static void Filedialog_init() 
    { 
     Stream myStream = null; 
     OpenFileDialog openFileDialog = new OpenFileDialog(); 

     openFileDialog.InitialDirectory = "c:\\"; 
     openFileDialog.Filter = "bin files (*.bin)|*.bin|All files (*.*)|*.*"; 
     openFileDialog.FilterIndex = 1; 
     openFileDialog.RestoreDirectory = true; 
     openFileDialog.Multiselect = false; 

     if (openFileDialog.ShowDialog() == DialogResult.OK) 
     { 
      string filename = null; 
      string _datatype = null; 
      try 
      { 
       if ((myStream = openFileDialog.OpenFile()) != null) 
       { 
        foreach (String file in openFileDialog.FileNames) 
        { 
         filename = Path.GetFileName(file); 
         result.Add(filename); 
         // only show the name of file 

         Datatype.Add(_datatype); 
        } 
        filePath = openFileDialog.FileNames; 
        Datatype.ForEach(Console.WriteLine); 
       } 

       openFileDialog.Dispose(); 


      } 
      catch (Exception ex) 
      { 
       MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message); 
      } 
     } 
     else 
      MessageBox.Show("Upload Cancel"); 
    } 

Ich kann die Datei erfolgreich hochladen, indem Sie den Dateinamen und seinen Datentyp und Pfad direkt

zuweisen

Aber wenn ich openfiledialog verwendet, ging es schief mit "meine Datei wird von einem anderen Prozess verwendet"

Wie kann ich dieses Problem lösen?

+0

Wo ist der Code, der die Datei-Dialog öffnet sich und gibt die ausgewählten Dateien. Weil Sie in diesem Code irgendwo den Dateizugriff sperren. –

+0

Ich habe versucht, opfiledialog.Dispose() zu verwenden, aber es hat nicht funktioniert –

+0

Diese Zeile '(myStream = openFileDialog.OpenFile()' ist immer noch Sperre für Datei. Versuchen Sie, Stream mit 'using' zu verwenden, so dass es die stream sowie lock. Stattdessen mag es 'using (Stream myStream = openFileDialog.OpenFile()) {Ihr Code hier ...}' –

Antwort

0

Ausgabe liegt in Ihrem Code hier,

(myStream = openFileDialog.OpenFile()) Diese Zeile Sperre für die Datei hält, weil Ihr myStream nicht disposed bekommt. Sie müssen dispose den Stream, sobald Sie damit fertig sind.

So versuchen Sie mit using wie es wird dispose der Stream, sobald Ihr Ende mit Linie ausgeführt wird. Weitere Details unter using.

Sie wie unten versuchen,

using(Stream myStream = openFileDialog.OpenFile()) 
{ 
    //Your code here... 
} 
+0

Danke! Es funktioniert! Ich habe eine Lektion gelernt –

+0

Wenn das Ihr Problem behoben, bitte akzeptieren diese antwort also frage eine geschlossen sein. –

Verwandte Themen