Я реализовал следующий код с событием Timer.Elapsed, которое запускает пакетный процесс и снимает снимок экрана с моего рабочего стола. Пакетный процесс выполняется отлично везде, кроме кода ElapsedHandler. Я знаю, что обработчик вызван правильно, потому что я добавил код для печати в файл, который отлично работает. Сам пакетный процесс никогда не выполняется. Я что-то пропустил о таймере, который вызывает проблему?C# Таймер пропущен Не работает пакетный процесс в службе Windows
using System;
using System.IO;
using System.Diagnostics;
using System.Threading;
using System.Timers;
using System.Drawing;
using System.Drawing.Imaging;
using System.ServiceProcess;
namespace ScreenCaptureService
{
public class ScreenCaptureService : ServiceBase
{
private const int durationInMinutes = 1;
private System.Timers.Timer t;
protected override void OnStart(string[] args)
{
t = new System.Timers.Timer((float)(1000));
t.Elapsed += new ElapsedEventHandler(ElapsedHandler);
t.Enabled = true;
}
protected void ElapsedHandler(object sender, ElapsedEventArgs e)
{
string testpath = @"C:\Dump\new.txt";
if (!File.Exists(testpath))
{
File.CreateText(testpath);
using (StreamWriter sw = File.AppendText(testpath))
{
sw.WriteLine("Initialized");
}
}
else
{
using (StreamWriter sw = File.AppendText(testpath))
{
sw.WriteLine("Hello " + DateTime.Now.ToString());
}
}
Process.Start(@"C:\users\wyoung\screenshot.bat");
}
protected override void OnStop()
{
t.Enabled = false;
}
}
}
Что происходит, когда код достигает строки Process.Start при его отладке? – saarrrr
И каково контролируемое поведение пакетного процесса? – saarrrr
Хорошо, поэтому, если я запускаю его как консольное приложение, он работает отлично. Однако, как только я поместил его в службу Windows, он перестает работать. Странно то, что вывод txt-файла отлично работает в обоих тестах. – user3685285