C#将客户端创建为windowsservice
我正在做一个windowsService程序,每秒钟自动截屏一次,并将其设置为dir。当我运行它时,它只工作一次。 我怎样才能做到?这是我的密码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
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
}