J'utilise WebClient.DownloadFileAsync
tout en rendant YouTube Downloader et j'ai un problème à l'utiliser.Impossible d'exécuter le code suivant après DownloadFileAsync en C#?
WebClient client = new WebClient();
Process.Text("", "Downloading video data...", "new");
client.DownloadFileAsync(new Uri(this.VidLink), this.path + "\\tempVid"); // Line3
Process.Text("", "Downloading audio data...", "old");
client.DownloadFileAsync(new Uri(this.AudLink), this.path + "\\tempAud"); // Line5
FFMpegConverter merge = new FFMpegConverter();
merge.Invoke(String.Format("-i \"{0}\\tempVid\" -i \"{1}\\tempAud\" -c copy \"{2}{3}\"", this.path, this.path, dir, filename)); // Line8
merge.Stop();
Process.Text("", "Video merging complete", "new");
Process
est une autre classe que je utilise, et il fonctionne très bien, si jamais l'esprit à ce sujet. Mais j'ai un problème après l'exécution de la ligne 3. Les lignes 3 et 4 sont très bien exécutées et la ligne 5 ne sera pas exécutée. Lorsque j'ai utilisé DownloadFile
au lieu de DownloadFileAsync
, le code a très bien fonctionné, donc this.AudLink
ne pose aucun problème. La ligne 5 fonctionne également très bien lorsque je supprime la ligne 3.
De même, lorsque je supprime la ligne 3 et la ligne 5, la ligne 8 ne sera pas exécutée. Alors, quel est le problème avec ce code? Dois-je tuer le processus utilisé par client
ou quelque chose?
++) Je ne vais pas utiliser youtube-dl
lors du téléchargement de données vidéo, alors ne me dites pas d'utiliser plutôt youtube-dl.
Vous devriez être 'await'ing vos appels asynchrones, ou en utilisant une autre méthode pour déterminer le moment où ils sont faits. – Jamiec
@Jamiec Je me demandais la même chose .. si l'extrait de code était incomplet ou incorrect .. Sinon, toutes les méthodes en attente peuvent appeler .Result mais je ne le conseillerais pas. – rmjoia
attendez ou essayez d'utiliser 2 objets différents de webClient, ou faites-le dans différentes tâches, et utilisez Tâche1. ContinueWith avec un autre. – Amit