两个同名任务是否在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
}
}
}
现在,如果您在某个时间间隔内执行多个可能需要执行相同操作的延续,那么一次只能执行一个延续。这正是我想知道的。谢谢