WebClient, Мои документы Windows 7 C # - PullRequest
0 голосов
/ 31 мая 2011

Полагаю, это просто банальность и довольно легко исправить, в настоящее время я очень расстраиваюсь, так как всякий раз, когда я нахожу идею для сборки, я всегда сталкиваюсь с какой-то проблемой, например, с отделом пользовательского интерфейса или с этим, например.

Я пытаюсь загрузить файл через WebClient, я получил простой пользовательский интерфейс с двумя метками, двумя текстовыми полями, одной кнопкой и виджетом savefiledialog.Когда я пытаюсь сохранить файл, который я набрал в первом текстовом поле1, и, конечно же, нажимаю кнопку, чтобы активировать событие, я получаю исключение: «Приложение не может получить доступ к файлу, так как он используется другим процессом», но вот сделка,Я говорю своему приложению создать файл, сохранить содержимое файла из Интернета в новый файл.

Вы читаете дальше из приведенного ниже кода: Кстати, я ничего не получаю отОтладка, я думаю, это странно.Должен ли я прорваться в точку останова, так как я предполагал, что точка останова сломается в конце строки?
Заранее спасибо.

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));                                     
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 31 мая 2011

попробуйте это:

удалите текстовое поле2

замените ваш код на

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);
            }
        }

в текстовом поле1, введите URL-адрес файла, который вы хотите загрузить

0 голосов
/ 31 мая 2011

Убедитесь, что код в client_DownloadFileCompleted не пытается получить доступ к файлу.

Событие DownloadFileCompleted, которое предполагается использовать с методом DownloadFileAsync, нет причин использовать события вместе с методами блокировки (DownloadFile).

...