C# task new
时间: 2024-09-03 12:00:18 浏览: 43
深入分析C# Task
在C#中,`Task`是.NET框架用于异步编程的核心概念之一。当你创建一个新的任务时,通常使用`Task.Run()`方法、`Task.Factory.StartNew()`方法或者是从某个`async`方法返回的`Task`实例。
`Task.Run()`方法接受一个`Action`或`Func`作为参数,它会在给定的工作线程上立即执行这个动作或计算。例如:
```csharp
Task.Run(() => {
// 执行一些耗时操作
});
```
这里,`()`内的代码将在非UI线程上运行,避免阻塞UI线程。
`Task.Factory.StartNew()`提供更多的灵活性,可以指定工作线程池、设置取消选项等,适用于更复杂的场景:
```csharp
var task = Task.Factory.StartNew(() => {
// ...
}, cancellationToken, TaskCreationOptions.LongRunning, TaskScheduler.Default);
```
其中,`cancellationToken`是一个`CancellationToken`,`TaskCreationOptions`用于指定任务特性,`TaskScheduler`决定了任务将由哪个线程调度。
通过`async`和`await`,你可以更容易地创建异步方法,它们会返回`Task`实例,允许你在需要的地方暂停并恢复执行:
```csharp
public async Task DoSomethingAsync()
{
await Task.Run(() => PerformSomeLongOperation());
}
```
在这里,`DoSomethingAsync`方法就是一个异步方法,`PerformSomeLongOperation`会在后台线程执行。
阅读全文