sách gpt4 ăn đã đi

c# - 如何生成 Task 以展开

In lại 作者:太空狗 更新时间:2023-10-29 18:13:12 28 4
mua khóa gpt4 giày nike

谁能解释一下这两种说法的区别:

Task bTask = backup.BackupCurrentDatabaseAsync()
.ContinueWith(_ => CompressArchiveAsync());
//unwrap the tasks to produce one entire task
Task t = bTask.Unwrap();

sự tương phản

Task bTask = backup.BackupCurrentDatabaseAsync()
.ContinueWith(_ =>
{
CompressArchiveAsync();
});
//unwrap the tasks to produce one entire task
Task t = bTask.Unwrap();

phương pháp ExtractArchiveAsync() , BackupCurrentDatabaseAsync() , RestoreDatabaseAsync()全部返回 Nhiệm vụ .

在这里,第一个 Continuation 返回一个 Task .然后我可以 Unwrap()此任务将 Continuations 放在结果(内部)任务上。

第二个版本无法编译。这里唯一不同的是 CompressArchiveAsync() 周围的大括号.

我正在尝试访问结果(内部)Nhiệm vụ检查 Task.Status .如果我使用第二种方法,Task.Status 会报告 BackupCurrentDatabaseAsync() 的结果任务。

câu trả lời hay nhất

.ContinueWith(_ => CompressArchiveAsync());

相当于:

.ContinueWith(_ => 
{
return CompressArchiveAsync();
});

Để ý trở lại .

您的第二个代码片段无法编译,因为 ContinueWith不返回 Task , 但只是一个 Nhiệm vụ , 并且没有任何东西可以打开。

以下绑定(bind)到一个Func (一个接受 Nhiệm vụ 并返回 Nhiệm vụ 的函数)

_ => 
{
return CompressArchiveAsync();
}

但下面实际上绑定(bind)了一个Action (接受 Nhiệm vụ 但不返回任何内容的函数):

_ => 
{
CompressArchiveAsync();
}

以及对 Nhiệm vụ 的引用创建者 CompressArchiveAsync永远不会返回。如果不引用它,您将无法检查 Nhiệm vụ的状态。

Để ý:

因此你的 ContinueWith(Func)返回 Task你可以打开包装,但是你的 ContinueWith(Action)简单地返回一个 Nhiệm vụ .

关于c# - 如何生成 Task 以展开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27529946/

28 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress