C#/VB.Net任务与线程与BackgroundWorker
我已经“谷歌搜索”,但仍然与任务、线程和后台工作人员混淆C#/VB.Net任务与线程与BackgroundWorker,c#,vb.net,multithreading,backgroundworker,task,C#,Vb.net,Multithreading,Backgroundworker,Task,我已经“谷歌搜索”,但仍然与任务、线程和后台工作人员混淆 “任务是在当前线程上运行的高级API”是否正确 如果1是正确的,为什么我需要在同一线程中使用invoke来更改任务内部的UI Backgroundworker在应用程序中仅获得最低优先级?那么backgroundworker的性能低于task和thread?对吧? 最后,在我的应用程序中,我需要使用“HttpWebRequest”从服务器获取一个字符串,然后解析该字符串并更新UI。 如果我使用“HttpWebRequest.BeginGe
BackgroundWorker
也在线程池线程上运行
4) 使用是处理异步web请求的一种非常简单的方法:
Task.Factory.FromAsync<WebResponse>(request.BeginGetResponse, request.EndGetResponse, null)
.ContinueWith(
t =>
{
using (var response = (HttpWebResponse)t.Result)
{
// Do your work
}
},
TaskScheduler.FromCurrentSynchronizationContext()
);
Task.Factory.fromsync(request.BeginGetResponse,request.EndGetResponse,null)
.继续(
t=>
{
使用(var响应=(HttpWebResponse)t.Result)
{
//做你的工作
}
},
TaskScheduler.FromCurrentSynchronizationContext()
);
使用
TaskScheduler.FromCurrentSynchronizationContext
确保在当前线程上调用ContinueWith
中的回调。因此,如果任务是在UI线程上创建的,则响应将在后台检索,然后在UI线程上处理。任务在后台使用线程池,它们不限于调用它们的当前线程