我想在后台运行程序。 pref C# 我想把图标放在托盘中。 在指定的时间它同步文件夹(我知道如何同步文件夹)。 如何在后台运行并开始同步(例如凌晨2点)?
答案 0 :(得分:3)
您需要考虑使用windows scheduler service。
答案 1 :(得分:1)
在“后台”中运行
Form.Visible = False
Form.ShowInTaskbar = False
要开始同步,请使用Timer和...
如果您希望仅将服务作为后台进程,也可以考虑创建服务。
答案 2 :(得分:1)
我经常在Visual Studio http://www.developer.com/net/csharp/article.php/3336751附带的应用程序上使用Notify Icon作为开始同步,你可以在另一个线程上调用一个函数来测量每秒的时间,如果是凌晨2点,你可以调用另一个线程中的另一个函数来同步文件夹(你也可以使用一个计时器组件)。
资源:
通知图标:http://www.developer.com/net/csharp/article.php/3336751
C#线程:http://www.albahari.com/threading/
计时器组件:http://msdn.microsoft.com/en-us/library/system.windows.forms.timer.aspx和http://www.codeproject.com/KB/miscctrl/TimeSheet.aspx
答案 3 :(得分:1)
如果我是你,我会在Windows中使用调度程序服务。
提供服务,在托盘中保留图标等意味着您将填满宝贵的屏幕空间并消耗资源。更重要的是,用户需要一些方法来配置应用程序,以便他们可以选择是否以Windows启动;如果您提供此配置,则必然会与其他每个应用程序的配置不同。
另一方面,调度程序任务只需要一个进程 - 任务调度程序本身 - 用户可以自己禁用或删除任务。例如,Apple和Google自动更新程序流程都以这种方式运行。
答案 4 :(得分:1)
好吧,如果你从一个Windows窗体应用程序开始,并希望它在后台运行,挂在系统托盘上,你必须创建系统托盘,在Application.Run(MainForm)之前隐藏主窗体,然后你“继续。
要隐藏表单,我使用:
MainForm.WindowState = System.Windows.Forms.FormWindowState.Minimized;
MainForm.ShowInTaskBar = false;
(因为设置visible = false将由Run()方法重新打开。)
要创建系统托盘,我使用了here的说明: