首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C#如何防止任务与运行任务发生冲突?

C#如何防止任务与运行任务发生冲突?
EN

Stack Overflow用户
提问于 2020-06-15 14:55:40
回答 1查看 164关注 0票数 1

我有一个PollingService,它每分钟启动一个Task。这个Task将获取我文件夹中的所有邮件,然后循环遍历每个处理它们。在最后一个Task仍在运行时,可能会启动一个Task。这将导致邮件处理两次,并创建重复的数据。如何防止这种情况发生?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-15 15:15:54

一种选择是使用有限并发任务调度程序 (参见示例)。这可以确保每个任务都按顺序运行。

另一个选项是启动一个在循环中等待autoResetEvent的线程。计时器只会触发autoResetEvent,释放线程来完成它的工作。缺点是这将消耗整个线程。

第三种选择是在开始工作时设置一个标志,并在它完成时重新设置它。然后,如果设置了标志,定时器就可以跳过启动任务。您可能希望使用lock或互锁来避免线程安全问题。

在任务完成之前添加项时可能会出现一些问题,但是如果它是在计时器上运行的,我将假设所有项最终都会被处理。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62390983

复制
相关文章

相似问题

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