C# client web à l'Aide de Async et de renvoyer les données
Bien, j'ai rencontré un problème lors de l'utilisation de DownloadDataAsync et de l'avoir de retour les octets pour moi. C'est le code, je suis en utilisant:
private void button1_Click(object sender, EventArgs e)
{
byte[] bytes;
using (WebClient client = new WebClient())
{
client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(DownloadProgressChanged);
bytes = client.DownloadDataAsync(new Uri("http://example.net/file.exe"));
}
}
void DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
double bytesIn = double.Parse(e.BytesReceived.ToString());
double totalBytes = double.Parse(e.TotalBytesToReceive.ToString());
double percentage = bytesIn / totalBytes * 100;
label1.Text = Math.Round(bytesIn / 1000) + " /" + Math.Round(totalBytes / 1000);
progressBar1.Value = int.Parse(Math.Truncate(percentage).ToString());
if (progressBar1.Value == 100)
{
MessageBox.Show("Download Completed");
button2.Enabled = true;
}
}
L'erreur que j'obtiens est "Impossible de convertir implicitement le type "void" à " byte[]'"
Est-il de toute façon je peux rendre cela possible, et de me donner les octets fois qu'elle est téléchargée? Il fonctionne très bien lorsque éliminer les "octets =".
OriginalL'auteur xZerox | 2010-08-13
Vous devez vous connecter pour publier un commentaire.
Depuis le
DownloadDataAsync
méthode est asynchrone, il ne renvoie pas à un résultat immédiat. Vous devez gérer laDownloadDataCompleted
événement :e.Le résultat est null si la demande a échoué ou a été annulée. Vérifiez l'e.D'erreur et de l'e.Annulé avant que vous essayez d'obtenir le résultat.
OriginalL'auteur Thomas Levesque
client.DownloadDataAsync
n'ont pas de valeur de retour. Je pense que vous voulez obtenir les données téléchargées à droite? vous pouvez l'obtenir à l'arrivée de l'événement.DownloadProgressChangedEventArgs e
, à l'aide dee.Data
oue.Result
. Désolé j'ai oublié la propriété exacte.OriginalL'auteur Cheng Chen
DownloadDataAsync retourne void donc vous ne pouvez pas affecter de tableau d'octets. Pour accéder aux octets téléchargés, vous devez vous abonner à DownloadDataCompleted événement.
OriginalL'auteur Giorgi