我正在编写一个必须在后台执行某些操作的应用程序:检查电子邮件并解析它们以在数据库中注入一些数据,并连接到Web服务以检查某些状态异步操作。检测低用户活动和检查背景上的电子邮件
现在,我的解决方案是一个简单的计时器,它按预定义的时间表执行这些操作:每五分钟发送一次电子邮件,Web服务每分钟检查一次(但这些只在有待处理活动时执行,所以大部分时间这没有什么。)
现在我没有使用线程(我在开发阶段早期)。但我的计划是创建一个后台线程,让它离线完成工作。
几个问题:
- 我计划,以控制定时器(S)的一切。设置一个全局变量(基本“锁定”)启动线程。如果“锁定”已设置,请忽略它。线程在终止时清理它。我应该为我的线程使用更强大的锁定/队列机制吗? (我已经安装了OmniThread)
- 如何运行低优先级的线程?当后台线程正在执行数据插入或联网时,我不希望应用程序感到呆滞。
- 是否有一种干净的方式来验证用户活动,并且只有当用户不忙于键盘/鼠标时才启动该线程?
请记住,我没有线程经验。我一次写了一个FTP同步应用程序,所以我不是一个完整的新手,但那是很久以前的事了。
这是一个允许您创建/编辑发票等的应用程序,但它也需要阅读电子邮件并解析它以将所附电子发票作为收到的文档注入,并连接到税务办公室以获取已提交的发票状态。我不想中断用户的这些操作,所以我希望他们在后台运行。 – 2012-03-13 15:19:46
如果您的后台工作与您的应用程序没有直接交互,我会建议您使用单独的服务(如果您愿意,可以将其设置为低优先级)来运行它们。所以,即使您的应用程序已关闭,甚至没有用户登录,也可以处理这些作品。 – Justmade 2012-03-13 15:28:34
@Justmade - 当新电子邮件(发票)到达时,我确实希望收到一些通知。 – 2012-03-13 15:33:11