2011-05-31 24 views
0

我想它只是一個平庸而且很容易修復,我現在非常沮喪,因爲每當我找到一個想法構建我總是面臨某種問題,無論是在用戶界面部門或這個爲例。WebClient,我的文檔Windows 7 C#

我嘗試通過WebClient下載文件,我找到了一個簡單的用戶界面,兩個標籤,兩個文本框,一個按鈕,一個savefiledialog小部件。當我嘗試保存我輸入到第一個文本字段1的文件並且當按下按鈕來激活該事件時,我得到了一個webexception,「應用程序無法訪問該文件,因爲它被另一個進程使用」,但是阻礙了交易,我告訴我的應用程序創建該文件,將文件的內容從網絡保存到新文件中。

您從下面提供的代碼中進一步閱讀: 順便說一句,我沒有從調試中得到任何東西,我認爲這很奇怪。 我是否必須闖入斷點,因爲我認爲斷點會在行的末尾斷開?
在此先感謝。

private void button1_Click(object sender, EventArgs e) 
{ 
    string path = saveFileDialog1.FileName; 
    if (textBox2.Text != "") 
    { 
     string fileExt = textBox2.Text.Substring(textBox2.Text.LastIndexOf('.')); 
     saveFileDialog1.Filter = String.Format("fileExt | *{0}",fileExt); 
     // http://code.jquery.com/jquery-1.6.1.min.js 
     string fileName = textBox2.Text.Substring(textBox2.Text.LastIndexOf('/')+1); 
     saveFileDialog1.FileName = fileName; 
     DialogResult dResul = saveFileDialog1.ShowDialog(); 

     if (dResul == DialogResult.OK) 
     { 
      Debug.WriteLine(client.ResponseHeaders); 
      //client.UseDefaultCredentials = NetworkCredential; 
      //client.DownloadDataCompleted += new DownloadDataCompletedEventHandler(client_DownloadDataCompleted); 
      client.DownloadFileCompleted += new AsyncCompletedEventHandler(client_DownloadFileCompleted); 

      textBox1.Text = Path.Combine(saveFileDialog1.FileName); 

      //client.DownloadFileAsync(new Uri(textBox1.Text), saveFileDialog1.FileName); 
      path = saveFileDialog1.FileName; 
      Debug.WriteLine(client.ResponseHeaders); 
      client.DownloadFile(textBox1.Text, Path.Combine(path));          
     } 
    } 
} 
+0

我沒有看到文件的URL 「告訴我的應用程序創建文件」的代碼,但假設您在某個時間點使用流,則需要明確調用它們的Close()來釋放文件。完成後,您還應該在對話框中調用Dispose()。 – Jay 2011-05-31 13:36:39

回答

0

檢查client_DownloadFileCompleted中的代碼是否不嘗試訪問該文件。

DownloadFileCompleted事件應該與DownloadFileAsync方法一起使用,沒有理由將事件與阻塞方法一起使用(DownloadFile)。

0

試試這個:

刪除TextBox2中

通過

private void button1_Click(object sender, EventArgs e) 
     { 
      if (string.IsNullOrEmpty(textBox1.Text)) 
      { 
       return; 
      } 
      string extention = Path.GetExtension(textBox1.Text); 
      string fileName = Path.GetFileNameWithoutExtension(textBox1.Text); 

      SaveFileDialog saveFileDialog = new SaveFileDialog(); 
      saveFileDialog.Filter = String.Format("{0} files | *{0}", extention); 
      saveFileDialog.FileName = fileName; 
      if (saveFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) 
      { 
       WebClient client = new WebClient(); 
       client.DownloadFile(textBox1.Text, saveFileDialog.FileName); 
      } 
     } 

在TextBox1中更換你的代碼,把你想要下載

相關問題