在C#中,我们知道有多个后台线程......所以我们可以创建多个UI线程吗?
和多个UI线程有助于在没有freeez的情况下更新观察集合中的数据吗?
如果是。从webservice获取数据并更新到观察集合的最佳方式是什么..
代码: -
Thread lthrThread = new Thread((ThreadStart)delegate
{
string Data = DataFromServer()
this.Dispatcher.BeginInvoke(new Action(() =>
{
UI freeze here for 5 -10 seconds
}));
});
lthrThread.SetApartmentState(ApartmentState.STA);
lthrThread.Start();
答案 0 :(得分:0)
UI线程是主线程。你不能复制它。如果你在ui线程上调用你的数据,你的应用程序用户界面将不会响应,直到它结束。所以,你需要创建后台线程或任务来处理数据调用webservices。当您从webservice获取数据时,将其传递给主线程(UI)。您可以使用Dispatcher
。
Application.Current.Dispatcher?.BeginInvoke(new Action(() => {
// Pass data to UI here.
}));
或者您可以使用更方便的async Task
。