在C#4.0中,我们已经Task在System.Threading.Tasks命名空间.之间有什么真正的改变Thread和Task.我为了学习而做了一些示例程序(帮助从MSDN获取)
Parallel.Invoke
Parallel.For
Parallel.ForEach
Run Code Online (Sandbox Code Playgroud)
但有很多疑问,因为这个想法并不那么清楚.
我最初在Stackoverflow中搜索了类似类型的问题但可能是这个问题标题我无法得到相同的.如果有人知道之前发布的相同类型的问题,请提供链接的参考.
我正在使用带有asp.net core 2.0的C#开发一个带有REST Api的Web应用程序
我想要实现的是当客户端向端点发送请求时,我将运行与客户端请求上下文分离的后台任务,如果任务成功启动,该任务将结束.
我知道有HostedService,但问题是HostedService在服务器启动时启动,据我所知,没有办法从控制器手动启动HostedService.
这是一个简单的代码来演示这个问题.
[Authorize(AuthenticationSchemes = "UsersScheme")]
public class UsersController : Controller
{
[HttpPost]
public async Task<JsonResult> StartJob([FromForm] string UserId, [FromServices] IBackgroundJobService backgroundService) {
//check user account
(bool isStarted, string data) result = backgroundService.Start();
return JsonResult(result);
}
}
Run Code Online (Sandbox Code Playgroud)