Task completedTask = Task.CompletedTask; 替换这个方法,当前是.NET Framework 4.0
时间: 2024-01-21 09:19:14 浏览: 77
在.NET Framework 4.0中,可以使用以下代码替代Task.CompletedTask:
```
TaskCompletionSource<object> tcs = new TaskCompletionSource<object>();
tcs.SetResult(null);
Task completedTask = tcs.Task;
```
这里我们使用`TaskCompletionSource`来创建一个新的任务,然后通过`SetResult`方法设置任务结果为`null`,最后返回该任务。这个任务与`Task.CompletedTask`一样,是一个已经完成的任务。
相关问题
Task.CompletedTask 提示task没有CompletedTask这个方法
`CompletedTask` 是一个静态属性,用于创建一个已经完成的 `Task` 对象,它没有 `CompletedTask` 方法。可以使用以下方式来创建一个已完成的 `Task` 对象:
```csharp
Task completedTask = Task.CompletedTask;
```
或者使用 `Task.FromResult` 方法来创建一个已完成的 `Task` 对象:
```csharp
Task completedTask = Task.FromResult(0);
```
这两种方式都会创建一个已完成的 `Task` 对象,可以直接使用。
.net 4.0没有Task.Delay
对于 .NET Framework 4.0,可以使用以下代码模拟 Task.Delay:
```
public static Task Delay(int millisecondsDelay)
{
var tcs = new TaskCompletionSource<bool>();
var timer = new System.Timers.Timer(millisecondsDelay);
timer.Elapsed += (obj, args) => tcs.TrySetResult(true);
timer.Start();
return tcs.Task;
}
```
这个方法使用了 TaskCompletionSource 和 Timer 来实现延时。Timer 会在指定的时间间隔后触发 Elapsed 事件,然后设置 TaskCompletionSource 的状态为完成,从而使得返回的 Task 完成。
阅读全文