在 C# 中单独维护两个同名的任务
本文关键字:两个 任务 单独 维护 | 更新日期: 2023-09-27 18:30:38
我的控制台应用程序中有以下代码:
if (Count % 11 >= 5)
{
GrabberTask = GrabberTask.ContinueWit(Grabber.ExtractSources);
}
if 子句位于带有计数器的循环内。我想知道如果在GrabberTask
第一次开始之前第二次计算 if 为 true,会发生什么。当 if 条件计算结果为 true 时,有没有更好的方法可以继续执行相同的任务。我正在从网页中提取图像源并将它们存储在LinkedList
中。有时我会收到从两个不同的任务添加到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
}
}
}
现在,如果您在某个时间间隔内执行许多可能需要执行相同操作的延续,则一次只能执行一个延续。