在任务中嵌套任务,尝试不阻止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());

在任务中嵌套任务,尝试不阻止UI线程

如果有人想了解更多关于如何做到这一点的信息:

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帮助了很多