gpt4 book ai didi

c# - 在 C# 4.0 中继承 Task 类

转载 作者:太空宇宙 更新时间:2023-11-03 14:28:03 25 4
gpt4 key购买 nike

我试图安排一个工作单元在后台处理,并产生一个结果。最初我正在考虑扩展 Task 类,并安排自定义任务的实例。 (想想 Java 中的 Future 和 Runnable)每个任务都会封装多个输入/输出属性。多个任务同时处理,并且完全自主。

但是,我找不到任何这样做的例子,所以我开始怀疑这是否是正确的方法。有人可以提供使用 System.Threading.Tasks 正确执行此操作的示例

最佳答案

您不需要继承 Task。只需实例化一个 Task 对象,并在构造函数中为其提供要执行的方法。

以下示例计算一个值并将其与一个标志一起存储在一个字段中以指示操作已完成:

    int _taskResult;
bool _taskFinished;

/// <summary>Starts a background task to compute a value and returns immediately.</summary>
void BeginTask()
{
_taskFinished = false;
Task task = new Task(() =>
{
var result = LongComputation();
lock (this)
{
_taskResult = result;
_taskFinished = true;
}
});
task.Start();
}

/// <summary>Performs the long computation. Called from within <see cref="BeginTask"/>.</summary>
int LongComputation()
{
// Insert long computation code here
return 47;
}

当然,在您检索结果的其他代码中,您必须在检查 _taskFinished_taskResult 之前锁定同一对象。

关于c# - 在 C# 4.0 中继承 Task 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3375491/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com