我使用一分钟定时器来创建任务,该任务每次调用相同的过程,但带有一些参数值(不同,但可以与某些参数相同),并且我想在创建任务之前检查是否存在任何具有当前参数值的调用过程的任务。如果不是,则创建任务,如果是,则不执行任何操作(等待finnish任务)。
在计时器中:
// Check if exist Task called MyProcedure with current myParameter value.
// If NO then
Task task = new Task(() => { MyProcedure(myParameter); });
task.Start();
// else nothing发布于 2021-09-01 10:56:49
类似于:
private readonly ConcurrentDictionary<SomeType, Task> _tasks = new();
Task DoTheThing(SomeType value) => _tasks.GetOrAdd(value,
static myParameter => Task.Run(() => MyProcedure(myParameter))); 发布于 2021-09-01 10:57:43
要验证某个方法是否已被调用并不那么容易。但是你能做的就是在你创建的任务列表上工作。
// 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");
}https://stackoverflow.com/questions/69012139
复制相似问题