首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C#检查任务状态

C#检查任务状态
EN

Stack Overflow用户
提问于 2021-09-01 10:35:30
回答 2查看 46关注 0票数 1

我使用一分钟定时器来创建任务,该任务每次调用相同的过程,但带有一些参数值(不同,但可以与某些参数相同),并且我想在创建任务之前检查是否存在任何具有当前参数值的调用过程的任务。如果不是,则创建任务,如果是,则不执行任何操作(等待finnish任务)。

在计时器中:

代码语言:javascript
运行
复制
// Check if exist Task called MyProcedure with current myParameter value.
// If NO then

   Task task = new Task(() => { MyProcedure(myParameter); });
   task.Start();

// else nothing
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-09-01 10:56:49

类似于:

代码语言:javascript
运行
复制
private readonly ConcurrentDictionary<SomeType, Task> _tasks = new();

Task DoTheThing(SomeType value) => _tasks.GetOrAdd(value,
    static myParameter => Task.Run(() => MyProcedure(myParameter))); 
票数 0
EN

Stack Overflow用户

发布于 2021-09-01 10:57:43

要验证某个方法是否已被调用并不那么容易。但是你能做的就是在你创建的任务列表上工作。

代码语言:javascript
运行
复制
// create a list of type Task
List<Task> tasks = new List<Task>();
    
// run the Task and add it to your list
tasks.Add(Task.Run(() => Method()));        
    
    // exmaple: get the recently added task
var t = tasks[tasks.Count - 1];
            
if (t.IsCompleted == false){
    Console.WriteLine("task is running");
}
    
t.Wait(); // wait for this explicit task
if (t.IsCompleted){
    Console.WriteLine("task is comleted");
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69012139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档