【发布时间】:2008-11-30 15:54:40
【问题描述】:
我有一个关于最佳做法的问题。当使用如下两个辅助加载方法时,何时是向 UI 发送回调的最佳时间? Button1 在返回时使用 Dispatcher,而 Button2 允许帮助加载类封装对 Dispatcher 的调用。我倾向于使用 Button2。
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);
}
}
【问题讨论】: