两个同名任务是否在C#中分别维护?

两个同名任务是否在C#中分别维护?,c#,task-parallel-library,C#,Task Parallel Library,我的控制台应用程序中有以下代码: if (Count % 11 >= 5) { GrabberTask = GrabberTask.ContinueWit(Grabber.ExtractSources); } if子句位于带计数器的循环内。我想知道在第一次启动GrabberTask之前,如果if再次计算为true,会发生什么。当if条件的计算结果为true时,是否有更好的方法继续执行相同的任务。我正在从网页中提取图像源,并将其存储在链接列表中。有时,我会从两个不同的任务中获得添加

我的控制台应用程序中有以下代码:

if (Count % 11 >= 5)
{
    GrabberTask = GrabberTask.ContinueWit(Grabber.ExtractSources);
}

if子句位于带计数器的循环内。我想知道在第一次启动
GrabberTask
之前,如果if再次计算为true,会发生什么。当if条件的计算结果为true时,是否有更好的方法继续执行相同的任务。我正在从网页中提取图像源,并将其存储在
链接列表中。有时,我会从两个不同的任务中获得添加到
LinkedList
的重复链接。如何防止这种情况发生?

每次提供延续时,将执行整个延续

您需要的是实现某种线程同步,以避免超过一个线程对某些资源执行给定的操作

最简单的是
lock
语句:

public class Test
{
    private static readonly object _syncLock = new object();

    public void MyMethod() 
    {
         lock(_syncLock)
         {
            // No more than a thread will be able to work within this
            // protected code block. Others will be awaiting/blocked until
            // the thread that acquired the lock leaves this code block
         }
    }
}

现在,如果您在某个时间间隔内执行多个可能需要执行相同操作的延续,那么一次只能执行一个延续。

这正是我想知道的。谢谢