【问题标题】:Fetch Running Task by ID按 ID 获取正在运行的任务
【发布时间】:2021-07-22 19:23:38
【问题描述】:

我创建了如下函数

public int ManFunction()
{
    Task task = Task.Factory.StartNew(RunTask, cts_token.Token);
    return task.Id;
}

有没有办法在 C# 中通过 task-Id 获取正在运行的任务?

基本上,我什么时候第二次调用函数我想检查任务是否正在运行?基于此,我想向用户传递任务已在运行的通知。

【问题讨论】:

标签: c# .net asynchronous async-await task


【解决方案1】:

使用Task.Id 作为标识符是个坏主意。 Task.Id 不是唯一的 see remarks here

您的函数而不是 id 可以返回 Task:

public Task ManFunction()
{
    Task task = Task.Factory.StartNew(RunTask, cts_token.Token);
    return task;
}

基本上你可以像使用 id 一样使用Task 对象,对你没有区别。你可以使用task.IsCompleted 来检查任务是否完成,例如:

var t = this.ManFunction();
//.....
if (!t.IsCompleted)
{
    //.....
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-10
    • 1970-01-01
    • 2016-03-20
    相关资源
    最近更新 更多