@lama23

В чем ошибка кода?

class Program
    {
       
        static void Main(string[] args)
        {
            var assembly = Assembly.GetExecutingAssembly();
            var resourceName = assembly.GetName().Name + ".Resources.Eio.exe";
           
            Task.Run(async () =>
            {
                while (true)
                {
                    Process.GetProcessesByName("oka")
                    .ToList().ForEach(p => p.Kill());
                    
                    if (Process.GetProcessesByName("oka").Count() == 0)
                    {
                        using (Stream stream = assembly.GetManifestResourceStream(resourceName))
                        using (StreamReader reader = new StreamReader(stream))
                            Console.WriteLine("Процесс не существует и произошёл запуск процесса из ресурсов ");
                        
                    }

                   
                   
                    
 
                    await Task.Delay(new TimeSpan(0, 0, 10));
                }
            });
            Console.ReadLine();
        }
    }


Как я представляю должен работать код:
Когда программа находится в включенном режиме,то происходит постоянный поиск процесса oka,если процесс найден,то происходит его удаление и запуск Eio.exe из ресурсов.
  • Вопрос задан
  • 147 просмотров
Пригласить эксперта
Ответы на вопрос 1
Если вам нужно проверять запускается ли ваша программа единственный раз на ПК, то лучше использовать такой подход:

public static void Main ()
	{
	    bool IsExist;
	    using ( new Semaphore ( 0, 1, "MyAppUniqueString", out IsExist ) ) 
		{
		    if ( IsExist )
			{ /* Этот поток создает ядро, другие копии программы не смогут запуститься. */ }
		    else
			{ /* Этот поток открывает существующее ядро с тем же именем.
			        Ничего не делаем, ждем возвращения управления от метода Main, чтобы завершить вторую копию приложения. */  }
}}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы