Aight, a fait un peu de googling et de recherche ici, la seule question que j'ai trouvé liée était this, bien que la seule réponse, il n'a pas été marqué comme accepté, est vieux et est source de confusion.UploadFileAsync non asynchrone?
Mon problème est fondamentalement ce que j'ai dit dans le titre. Ce qui se passe, c'est que l'interface graphique se bloque pendant le téléchargement. Mon code:
// stuff above snipped
public partial class Form1 : Form
{
WebClient wcUploader = new WebClient();
public Form1()
{
InitializeComponent();
wcUploader.UploadFileCompleted += new UploadFileCompletedEventHandler(UploadFileCompletedCallback);
wcUploader.UploadProgressChanged += new UploadProgressChangedEventHandler(UploadProgressCallback);
}
private void button1_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
string toUpload = openFileDialog1.FileName;
wcUploader.UploadFileAsync(new Uri("http://anyhub.net/api/upload"), "POST", toUpload);
}
}
void UploadFileCompletedCallback(object sender, UploadFileCompletedEventArgs e)
{
textBox1.Text = System.Text.Encoding.UTF8.GetString(e.Result);
}
void UploadProgressCallback(object sender, UploadProgressChangedEventArgs e)
{
textBox1.Text = (string)e.UserState + "\n\n"
+ "Uploaded " + e.BytesSent + "/" + e.TotalBytesToSend + "b (" + e.ProgressPercentage + "%)";
}
}
EDIT: Pour plus de précisions, voici ce qui se passe dans l'ordre:
- je clique button1
- Je sélectionnez un fichier
- L'interface graphique cesse de répondre, comme dans quand je clique dessus, rien ne se passe
- Après quelques secondes, 50% apparaît dans la zone de texte En outre, les résultats de la réalisation. Voir mon commentaire à la question que je Marquée comme la solution
- Après une seconde ou avec l'interface graphique ne répond pas en entre elle est remplacée par la réponse
* Pourquoi * pensez-vous que ce n'est pas asynchrone? –
Oups. Ajouté – unrelativity