C++:一直在机器上运行后台任务
Posted
技术标签:
【中文标题】C++:一直在机器上运行后台任务【英文标题】:C++ : Running a background task all the time on machine 【发布时间】:2014-04-11 11:16:58 【问题描述】:我想制作一个 MFC 应用程序,让线程/进程一直在后台运行,以跟踪硬盘大小等信息。
当硬盘大小超过 90% 时,它会显示一个警告对话框(也是同一应用程序的 MFC 对话框)。
我不知道该怎么做。
我尝试了windows服务选项,但对我来说似乎不太可靠,因为大多数时候服务没有成功安装,或者如果安装了它也没有成功启动。
我还需要哪些其他选择来实现它?
感谢任何帮助。
【问题讨论】:
如果您的服务未安装或未正常运行,您需要修复您的程序。我做了很多服务程序,都可以长时间安装和运行。 当然你可以随时制作一个普通的程序,放在系统自动启动文件夹中。然后你甚至可以在系统托盘中为它制作一个图标。 除此之外,请花点时间阅读the help pages,尤其是名为"What topics can I ask about here?" 和"What types of questions should I avoid asking?" 的部分。更重要的是,请阅读the Stack Overflow question checklist。您可能还想了解如何创建Minimal, Complete, and Verifiable example。 @user2681573,除非您有令人信服的理由用 C++ 编写 Windows 服务并使用 MFC 进行通知,否则我建议您看看 C#。我在这里的回答提供了创建和安装基于 C# 的服务的分步说明。 ***.com/questions/593454/… @user2681573,这是一篇 CodeProject 文章,用于编写与服务交互的应用程序。 codeproject.com/Articles/742494/… 【参考方案1】:-
创建一个工作线程,持续监控磁盘空间。
在主线程中创建用户定义的消息并为其提供处理程序
当磁盘空间超过 90% 时,发布消息(发布您创建的用户定义消息)
来自用户定义消息“显示警告消息”的主线程处理程序
注意:服务不适合此任务,因为它们不喜欢用户交互。
【讨论】:
可以设置一个标志,允许服务与桌面交互,比如显示一个消息框。 哦!我不知道。我指定的是书呆子的东西。如果你已经这样做了,我会选择 U。感谢您指定 Joachim Pileborg。 @Sivaraman 所以即使在应用程序退出和系统重新启动之间,工作线程也会继续在后台运行? 不,工作线程仅在应用程序运行时运行。如果您的应用被添加到启动文件夹,它将在系统启动时启动。 @Joachim Pileborg,允许服务与桌面交互的日子在 Windows Vista 中已经结束。请参阅此处接受的答案:superuser.com/questions/415204/…以上是关于C++:一直在机器上运行后台任务的主要内容,如果未能解决你的问题,请参考以下文章