Как это можно выполнить один?C#

Место общения программистов C#
Ответить
Anonymous
 Как это можно выполнить один?

Сообщение Anonymous »

У меня есть этот код C#, но есть небольшая проблема: он постоянно завершает работу и запускает процесс «bubbles.scr» каждые 0,01 секунды (я знаю, что за это отвечает «System.Threading.Thread.Sleep(1000);» вторая вещь 0,01), но вот в чем дело:
Нам нужно, чтобы он проверял и завершал каждую запущенную задачу «bubbles.scr», но когда он убивает одну, он запускает другой случай «bubbles.scr» вместо убитого, а затем он просто перестает пытаться запустить или завершить любые другие экземпляры bubbles.scr после этого.
По сути, он сохраняет лихорадочно ищем «bubbles.scr» (с задержкой 10 мс), находит один, убивает его, запускает другой экземпляр bubbles.scr (с задержкой 10 мс), перестает делать все предыдущие действия, пока не будет найден bubbles.scr. запуск останавливается пользователем, а затем возвращается к поиску.
Примечание: нам нужна часть while (true), потому что мы хотим, чтобы он постоянно искал bubbles.scr. .
Проверено: сценарий, который ищет bubbles.scr, убивает его и запускает другой экземпляр (один раз).
Случилось: он продолжал убивать и запускать экземпляры bubbles.scr.
using System;
using System.Diagnostics;
using System.Linq;

namespace BubbleKiller
{
class Program
{
static void Main(string[] args)
{
while (true)
{
bool isNOTrunning = false;
bool ISrunning = false;
bool bubblesKilled = false;
bool secondTime = false;

// Get all running processes with name "bubbles.scr"
Process[] bubbles = Process.GetProcessesByName("bubbles.scr");
if (bubbles.Length == 0)
{
isNOTrunning = true;
ISrunning = false;
}
else if (bubbles.Length == 1 && !secondTime)
{
ISrunning = true;
}

if (ISrunning && !bubblesKilled)
{
foreach (var bubble in bubbles)
{
bubble.Kill();
bubblesKilled = true;
}
}

if (bubblesKilled)
{
isNOTrunning = true;
ISrunning = false;
}

if (bubblesKilled && isNOTrunning)
{
secondTime = true;
ISrunning = true;
bubblesKilled = true;
Process.Start("bubbles.scr");
}

// Introduce a small delay to avoid excessive CPU usage
System.Threading.Thread.Sleep(10);
}
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/787 ... ecuted-one
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»