Как читать строку из запущенной консоли на C#?

245
18 октября 2017, 04:15

Проблема заключается в следующем.

Я майнер, и во время майнинга периодически бывает перезапускается видеодрайвер(видеокарта gtx 1050ti). И после перезапуска у меня консоль майнинга продолжает работать, но при этом скорость падает до нуля. Решил я создать программу на c#.net по нажатию кнопки должен активироваться профиль системы на режим максимальной производительности и запуск майнера. При повторном нажатии на кнопку все становилось по умолчанию. Эта настройка производится при помощи батников.

Я решил что проблему можно обойти тем, что бы была возможность прочитывать последнюю строку консоли с определенной периодичностью что бы задать условие при котором моя программа бы перезапускала майнер.

По поводу решения проблем с видеодрайверами, прошерстил весь интернет, доводы были всякие: многие ссылались на заводской брак, кто-то давал советы по решению проблем(переустанови дравера, выключи разгон и т.д.), все это не помогает.

Проект я залил на GitHub - https://github.com/selt007/Run-Mine/tree/master/Run%20Mining/Run%20Mining

Заранее спасибо) Вот главная форма:

namespace Run_Mining
    {
        public partial class Form1 : Form
        {
            public static bool action = false;
            public static string target_name = "miner";
            public Form1()
            {
                TopMost = true;
                InitializeComponent();
                timer.Interval = 15000;
            }
            private void power_Click(object sender, EventArgs e)
            {
                action = !action;            
                if (action)
                {
                    Running.runBat();
                    power.Text = "Stop!";
                    power.ForeColor = Color.Red;
                    timer.Start();
                    using (Running.process = new Process())
                  {
                     Running.process.StartInfo = Running.startInfo;
                     Running.process.Start();
                     Running.process.BeginOutputReadLine();
                     Running.process.WaitForExit();
                  }
                }
                else
                {
                    Running.killBat();
                    power.Text = "Start!";
                    power.ForeColor = Color.Green;
                    timer.Stop();
                }
            }
        }
    }

Дополнительный класс:

class Running
    {
        public static ProcessStartInfo startInfo;
        public static void runBat()
        {
            try
            {
startInfo = new ProcessStartInfo()
                {
                    FileName = "cmd.exe",
                    Arguments = @"/k ""D:\Майнинг\Zec Miner 0.3.4b\0.3.4b\fypool.bat""",
                    WorkingDirectory = @"D:\Майнинг\Zec Miner 0.3.4b\0.3.4b\",
                    RedirectStandardOutput = true,
                    UseShellExecute = false
                };
    var process = Process.Start(startInfo);
            }
            catch {
                MessageBox.Show("File fypool.bat not found! " +
                "The application must be in the same folder as the files!");
            }
        }
    } 

А здесь я описал шаг таймера:

       private void timer_Tick(object sender, EventArgs e)
    {
        var runningProcs = from proc in Process.GetProcesses(".") orderby proc.Id select proc;
        if (runningProcs.Count(p => p.ProcessName.Contains(target_name)) > 0)
        { }
        else
        { Running.runBat(); }
        using (StreamReader sr = Running.process.StandardOutput)
        {
            if (sr.BaseStream.CanRead)
            {
                sr.ReadLine();
            }
        }
    }
READ ALSO
Работа с SortedDictionary - C# [требует правки]

Работа с SortedDictionary - C# [требует правки]

Есть число в каждой строчке, + оно добавляется, - нужно убрать

206
Обработка big data, оптимизация сортировки

Обработка big data, оптимизация сортировки

Имеется входной файл ~ 1млн строк, которые должны сортироваться по определенному принципуНа данный момент сортировка происходит следующим...

254
Способ задания ключевых слов

Способ задания ключевых слов

Необходимо парсить файл на ключевые словаКлючевых слов небольшое количество

203