Проблема заключается в следующем.
Я майнер, и во время майнинга периодически бывает перезапускается видеодрайвер(видеокарта 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();
}
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть число в каждой строчке, + оно добавляется, - нужно убрать
Имеется входной файл ~ 1млн строк, которые должны сортироваться по определенному принципуНа данный момент сортировка происходит следующим...
Необходимо парсить файл на ключевые словаКлючевых слов небольшое количество