J'ai une question sur les meilleures pratiques. Quel est le meilleur moment pour envoyer un rappel à l'interface utilisateur en utilisant une méthode de chargement d'aide comme les deux ci-dessous? Button1 utilise le Dispatcher lorsqu'il est renvoyé et Button2 permet à la classe de chargement d'aide d'encapsuler l'appel sur le Dispatcher. J'ai tendance à favoriser le Button2.Bonne pratique: Quand renvoyer à l'interface utilisateur Thread
private void Button1_Click(object sender, RoutedEventArgs e)
{
AsyncLoader.LoadAsyncWithoutDispatcher(delegate(string result)
{
this.Dispatcher.Invoke((Action)delegate { this.TextBox1.Text = result; });
});
}
private void Button2_Click(object sender, RoutedEventArgs e)
{
AsyncLoader.LoadAsyncWithDispatcher(this.Dispatcher, delegate(string result)
{
this.TextBox1.Text = result;
});
}
class AsyncLoader
{
public static void LoadAsyncWithoutDispatcher(Action<string> completed)
{
var worker = new AsyncClass();
worker.BeginDoWork(delegate(IAsyncResult result)
{
string returnValue = worker.EndDoWork(result);
completed(returnValue);
}, null);
}
public static void LoadAsyncWithDispatcher(Dispatcher dispatcher, Action<string> completed)
{
var worker = new AsyncClass();
worker.BeginDoWork(delegate(IAsyncResult result)
{
string returnValue = worker.EndDoWork(result);
dispatcher.Invoke(completed, returnValue);
}, null);
}
}