.NET 4.x Не зацикливайся пожалуйста - C#

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

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

Написал такой класс
using AutoItX3Lib;
 
namespace Programm
{
    class PixelGetColor
    {
        AutoItX3 au3 = new AutoItX3();
        public int positioncolor(int x, int y, int pixel_need)
        {
            var pixel = au3.PixelGetColor(x, y); // Получаем пиксель на заданных координатах
            if (pixel == pixel_need) // Сверяем полученный пиксель с заданным
            {
                return 1; // Все хорошо пиксели совпадают
            }
            else
            {
                return 0; // Найденный пиксель не устраивает по условию или ошибка
            }
        }
    }
}
Запрашиваю его из
private void тестToolStripMenuItem_Click(object sender, EventArgs e)
        {
            AutoItX3 au3 = new AutoItX3();
            int y = au3.WinGetPosY("Программа C#"); // Координаты окна
            int x = au3.WinGetPosX("Программа C#"); // Координаты окна
            int t = au3.WinGetClientSizeHeight("Программа C#"); // Ширина окна
            int b = au3.WinGetClientSizeWidth("Программа C#"); // Длина окна
            this.toolStripStatusLabel2.Text = ("Ищу");
            PixelGetColor pixelcolor = new PixelGetColor();
            while(true)
                {
                    int need_udar = pixelcolor.positioncolor(x + 415, y + 307, 15789729); // Вызываем класс
                    if (need_udar == 1)
                    {
                        this.toolStripStatusLabel2.Text = ("Нашел");
                        au3.MouseClick("LEFT", x + 447, y + 317, 1, 0); // Кликаем в окно
                    }
                    else if ( need_udar == 0)
                    {
                        this.toolStripStatusLabel2.Text = ("Не нашел");
                    }
                }
        }
Нужен именно бесконечный цикл чтобы он не зацикливался. Я думаю как то в классе сделать приоритет выполнения, чтобы при вызове функции он ждал получение результата и только после этого повторял. Знания в C# минимальные 3 дня назад начал изучать. Прошу помощи Чтобы зарегистрировать AutoItX нужно вызвать cmd и прописать

regsvr32.exe AutoItX3.dll

(должно находится в папке)

Решение задачи: «.NET 4.x Не зацикливайся пожалуйста»

textual
Листинг программы
private void search()
        {
            while(true)
            {
                AutoItX3 au3 = new AutoItX3();
                int y = au3.WinGetPosY("Прогрмма C#");
                int x = au3.WinGetPosX("Прогрмма C#");
                int t = au3.WinGetClientSizeHeight("Прогрмма C#");
                int b = au3.WinGetClientSizeWidth("Прогрмма C#");
                this.toolStripStatusLabel2.Text = ("Ищу");
                PixelGetColor pixelcolor = new PixelGetColor();
                int need_udar = pixelcolor.positioncolor(x + 415, y + 307, 15789729);
                if (need_udar == 1)
                {
                    this.toolStripStatusLabel2.Text = ("Нашел");
                    au3.MouseClick("LEFT", x + 447, y + 317, 1, 0);
                    break;
                }
                else if (need_udar == 0)
                {
                    this.toolStripStatusLabel2.Text = ("Не нашел");
                }
            }
        }
        private void тестToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Thread potok1 = new Thread(search);
            potok1.Start();
            // прочие функции основного потока
        }

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


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

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

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