我想在后台运行程序。 pref C#

时间:2008-11-24 08:48:44

标签: c#

我想在后台运行程序。 pref C# 我想把图标放在托盘中。 在指定的时间它同步文件夹(我知道如何同步文件夹)。 如何在后台运行并开始同步(例如凌晨2点)?

5 个答案:

答案 0 :(得分:3)

您需要考虑使用windows scheduler service

答案 1 :(得分:1)

在“后台”中运行

Form.Visible = False
Form.ShowInTaskbar = False

要开始同步,请使用Timer和...

  • 检查每分钟的时间,如果时间匹配则开始同步
  • 或计算间隔Now-> TimeToStart,设置它,启动Timer,并在第一个滴答时将其重置为24小时

如果您希望仅将服务作为后台进程,也可以考虑创建服务。

答案 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.aspxhttp://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的说明: