C#将客户端创建为windowsservice

C#将客户端创建为windowsservice,c#,C#,我正在做一个windowsService程序,每秒钟自动截屏一次,并将其设置为dir。当我运行它时,它只工作一次。 我怎样才能做到?这是我的密码 protected override void OnStart(string[] args) { timer1_Tick(); } private void timer1_Tick() { string myDir = "c:\\Newfolder\\photo"; System.IO.Directory.CreateDirec

我正在做一个windowsService程序,每秒钟自动截屏一次,并将其设置为dir。当我运行它时,它只工作一次。 我怎样才能做到?这是我的密码

protected override void OnStart(string[] args)
{
    timer1_Tick();
}
private void timer1_Tick()
{
    string myDir = "c:\\Newfolder\\photo";
    System.IO.Directory.CreateDirectory(myDir);
    Bitmap bitmap = new Bitmap(Screen.PrimaryScreen.Bounds.Width,Screen.PrimaryScreen.Bounds.Height);
    Graphics graphics = Graphics.FromImage(bitmap as Image);
    graphics.CopyFromScreen(0, 0, 0, 0, bitmap.Size);
    string fileName = string.Format(@"c:\Newfolder\photo\Screenshot" +"_" + DateTime.Now.ToString("(dd_MMMM_hh_mm_ss_tt)") + ".png");
    bitmap.Save(fileName, ImageFormat.Png);
}

在OnStart方法中,删除对timer1\u tick的调用,并添加以下内容:

timer1.enabled = true;
timer1.interval = 10000; //change this to whatever you need
timer1.Start();

前提是您已经将滴答声事件附加到计时器。

启动时,您可以调用
timer1\u滴答声
一次。不要这样做-改为启动计时器:
timer1.start()它会滴答滴答地叫
timer1\u滴答
每次都会让我的英语有点糟糕!你想这样说#protected override void OnStart(string[]args){timer1.Start();timer1_Tick();}#是的,对。在一秒过去之前,我们仍然需要初始调用参见:是的,我知道这一点,但是,当我运行它时,对star方法的调用只有一个!OnStart方法是服务初始值设定项。它将始终只运行一次。@NoName方法
OnStart
应只运行一次。您可以将
timer1
设置为多次执行
timer1\u Tick
,而不是调用
timer1\u Tick
。如果确实设置了
timer1
,但事件仍然存在问题,则可能是方法
timer1\u Tick
未正确绑定到
timer1
的Tick事件。在这种情况下,尽管可以回答您自己的问题,但这不是答案。如果要向问题添加信息,可以对其进行编辑。此外,这个网站不是一个论坛-你已经参观了,你应该有一个图表。您可以随时删除此答案。好的。我知道答案,首先我在添加信息后看到了你的答案,我是这个网站的新手,所以我没有足够的关于这个网站的信息。另外,我的英语很差,我知道你是新来的。这就是我告诉你的原因。目的是保持现场清洁。特别理想的情况是:一个问题放在最上面(包括所有需要的细节),然后是各种各样的答案。答案的顺序可能会改变。评论主要是为了澄清。此外,我们鼓励高质量的答案。编辑:评论也可以编辑,只要它们不够老。确定。非常感谢@Theraot。我欠你:)!我试着在高温下这样做,如果我事先犯了错误,我很抱歉
static void Main()
    {if DEBUG
        Service1 Myservice = new Service1();
        Myservice.OnDebug();
        System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite);else
        ServiceBase[] ServicesToRun;
        ServicesToRun = new ServiceBase[] 
        { 
            new Service1()
        };
        ServiceBase.Run(ServicesToRun);endif
    }