Работа с Windows Service и графикой (на примитивном уровне) - C#

Узнай цену своей работы

Формулировка задачи:

Привет всем. Написал сервис который каждые 10 секунд добавляет в log файл информацию о текущем времени а также инфу о том что он был запущен либо был завершен. Захотел решить другую задачу - через определенное время делать принтскрин экрана, создавать файл с именем времени, и сохранять все это. все работает кроме одного - картинка получается пустая, т.е. в этот файл ничего не сохраняется. В чем может быть проблема? буду благодарен за любую информацию по теме!
private StreamWriter file;
        private FileStream fs;
        private Graphics grfx;
        private Bitmap bmp;
        private string temp;
        //Определяем таймер
        private System.Timers.Timer timer1;
        private const string MY_PATH = @"D:\";
        private const string EXTENSION = ".bmp";
 
        protected override void OnStart(string[] args)
        {
            file = new StreamWriter(new FileStream("D:\\temp.log",
    System.IO.FileMode.Append));
            this.file.WriteLine("MyFirstService стартовал");
            this.file.Flush();
            //Создаем таймер и выставляем его параметры
            this.timer1 = new System.Timers.Timer();
            this.timer1.Enabled = true;
            //Интервал 10000мс - 10с.
            this.timer1.Interval = 10000;
            this.timer1.Elapsed +=
             new System.Timers.ElapsedEventHandler(this.timer1_Elapsed);
            this.timer1.AutoReset = true;
            this.timer1.Start();
        }
 
        protected override void OnStop()
        {
            this.timer1.Stop();
            this.file.WriteLine("MyFirstService остановлен");
            this.file.Flush();
            this.file.Close();
        }
 
        private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            //Записываем время в файл или делаем все, что хотим
 
            this.temp = MyFirstService.MY_PATH + DateTime.Now.ToString("d.M.yyyy-HH.mm.ss") + MyFirstService.EXTENSION;
            this.fs = File.Create(temp);
            this.fs.Close();
            this.bmp = new Bitmap(1280, 800);
            this.grfx = Graphics.FromImage(bmp);
            this.grfx.CopyFromScreen(0, 0, 0, 0, new Size(1280, 800));
            this.bmp.Save(temp);
        }
в настройках сервиса, ставил галочку - разрешить взаимодействие с рабочим столом. не помогло. если реализовать тот же функционал ,но только повесив на кнопку в обычном windows forms, то все замечательно работает!

Решение задачи: «Работа с Windows Service и графикой (на примитивном уровне)»

textual
Листинг программы
            ShowInTaskbar = false;
            WindowState = FormWindowState.Minimized;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.231 из 5
Похожие ответы