Загрузка нескольких файлов асинхронного ожидания до последнего завершения - PullRequest
0 голосов
/ 14 июня 2010

Я пытаюсь загрузить много файлов, после загрузки оператора SQL необходимо вставить запись.Я использую System.Net.Client для загрузки каждого файла синхронно, тем не менее, это может быть сделано асинхронно.Там нет никакого отношения или зависимости между каждой загрузкой.

Сначала я просто попытался использовать WebClient.DownloadFileAsync, но это отключило программу и уничтожило все процессы / потоки загрузки.Во-вторых, я попытался создать процедуру ожидания примерно так:

while (processedFiles < totalFiles)
         Thread.Sleep(1000)

Это заморозило все.Так может кто-нибудь сказать мне, какой подход предпринять, чтобы реализовать этот Async?

1 Ответ

0 голосов
/ 14 июня 2010

В идеале вы должны просто использовать DownloadFileAsync и подключить событие DownloadFileCompleted , чтобы уведомить вас о завершении загрузки. Вот пример кода того, как вы можете подключить событие:

// Sample call : DownLoadFileInBackground2 ("http://www.contoso.com/logs/January.txt");
public static void DownLoadFileInBackground2 (string address)
{
    WebClient client = new WebClient ();
    Uri uri = new Uri(address);

    // Specify that the DownloadFileCallback method gets called
    // when the download completes.
    client.DownloadFileCompleted += new AsyncCompletedEventHandler (DownloadFileCallback2);
    // Specify a progress notification handler.
    client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(DownloadProgressCallback);
    client.DownloadFileAsync (uri, "serverdata.txt");
}

Вы можете вызвать это из приложения WinForms, которое просто бездействует, когда идет загрузка. Затем, когда все загрузки будут завершены, вы можете закрыть программу или все, что вам нужно.

...