Task completedTask = Task.FromResult(0); 也提示没有FromResult相关定义
时间: 2024-01-21 21:19:01 浏览: 161
`Task.FromResult(0)` 是 .NET Framework 4.5 引入的方法,如果你使用的是早期版本的 .NET Framework,则无法使用此方法。在早期版本中,可以使用以下代码来创建一个已完成的任务:
```csharp
var tcs = new TaskCompletionSource<object>();
tcs.SetResult(null);
Task completedTask = tcs.Task;
```
这将创建一个已完成的 `Task` 对象,可以像使用 `Task.FromResult()` 一样使用它。
相关问题
Task tss = Task.CompletedTask; 提示没有CompletedTask相关定义
`CompletedTask` 是 .NET Framework 4.6 中新增的一个静态任务,返回一个已完成的 Task 对象。如果您使用的是 .NET Framework 4.6 以下的版本,则可以使用以下方式创建一个已完成的任务:
```
Task tss = Task.FromResult(0);
```
或者
```
Task tss = Task.Factory.StartNew(() => { });
```
这两种方式都可以创建一个已完成的 Task 对象。
如何获得concurrent.futures进程池的进度条
要获得`concurrent.futures`进程池的进度条,可以使用`tqdm`库结合`concurrent.futures`的`as_completed`方法。具体实现步骤如下:
1. 导入必要的库
```python
import concurrent.futures
from tqdm import tqdm
```
2. 创建进程池
```python
pool = concurrent.futures.ProcessPoolExecutor(max_workers=4)
```
3. 定义任务函数
```python
def task(arg):
# 完成任务的代码
```
4. 提交任务并使用`tqdm`显示进度条
```python
results = []
tasks = [arg1, arg2, arg3, ...]
with tqdm(total=len(tasks)) as pbar: # 设置进度条的总长度
futures = [pool.submit(task, arg) for arg in tasks]
for future in concurrent.futures.as_completed(futures):
result = future.result()
results.append(result)
pbar.update(1) # 每完成一个任务,进度条加1
```
这样就可以在运行`concurrent.futures`进程池时获得进度条了。
阅读全文