在任务中嵌套任务,尝试不阻止UI线程
本文关键字:任务 线程 UI 嵌套 | 更新日期: 2023-09-27 18:22:23
所以我有一个任务,它发送一个服务调用。。。这个任务有一个continuewith,这样当调用返回时,程序就可以对数据进行排序。现在,我还希望当调用返回数据时,它会根据该数据进行另一个服务调用,而不会阻塞UI线程。这可能吗?
到目前为止,我的示例代码是:
Task t = new Task(() =>{//Make my service call};
t.Start();
t.ContinueWith((sender) =>
{
//sort my data out
//when thats done make another service call based on that data that doesn't
// block UI thread
}, cts.Token, TaskContinuationOptions.OnlyOnRanToCompletion, TaskScheduler.FromCurrentSynchronizationContext());
如果有人想了解更多关于如何做到这一点的信息:
void MyMethod()
{
Task t = new Task(() =>{//Make my service call};
t.Start();
t.ContinueWith((sender) =>
{
//sort my data out
//when thats done make another service call based on that data that doesn't
// block UI thread
BackgroundWorker bw = new BackgroundWorker();
bw.DoWork += bw_DoWork;
bw.RunWorkerAsync();
}, cts.Token, TaskContinuationOptions.OnlyOnRanToCompletion, TaskScheduler.FromCurrentSynchronizationContext());
}
void bw_DoWork(object sender, DoWorkEventArgs e)
{
//do some stuff
}
这个免费的电子书-线程在C#由Joseph Albahari帮助了很多