Как создать бесконечный фоновый цикл в Win Form?

163
19 июля 2017, 21:29

Вот построенная программа Win Form (C#)

    namespace sharp_test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            SoundPlayer simpleSound = new SoundPlayer(@"kurlik.wav");
            simpleSound.PlayLooping();
        }

    }
}

Вопрос в том, что не могу не как разобраться как создать теперь бесконечный цикл при этом чтобы была возможность обращения к контроллам формы.

Вот этот код нужно заставить работать в цикле (в фоне)

{
    Random rnd = new Random();
    int xi = 1;
    int yi = 1;
    while (true)
    {
        int vx = rnd.Next(0, 1);
        int vy = rnd.Next(0, 1);
        if (vx == 1) xi *= 1; else xi *= -1;
        if (vy == 1) yi *= 1; else yi *= -1;
        while (pictureBox1.Location.X > 12 & pictureBox1.Location.X < 272 & pictureBox1.Location.Y > 12 & pictureBox1.Location.Y < 249)
        {
            pictureBox1.Location = new Point(pictureBox1.Location.X + xi, pictureBox1.Location.Y + yi);
            textBox1.Text = Convert.ToString(pictureBox1.Location.X + xi);
        }
    }
}

(Если кратко, то эта программа должна перемещать картинку от края до края с самого запуска приложения)

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

Answer 1

Если просто, то это связано с тем, что графический интерфейс пользователя работает в отдельном потоке и защищен для доступа из других потоков.

Можно использовать класс Timer из пакета System.Windows.Forms: https://msdn.microsoft.com/ru-ru/library/system.windows.forms.timer(v=vs.110).aspx

Так же по ссылке вы найдете короткий пример использования.

READ ALSO
Подключиться к My SQL через Entity

Подключиться к My SQL через Entity

Есть консольное приложение C# которое нужно подключить к объектам на локальной БД, MysqlВ App

230
C# Excel создание выпадающего списка в ячейке

C# Excel создание выпадающего списка в ячейке

Вывожу в Excel данные в C# WinFormsВ одной ячейке мне нужно, чтобы был выпадающий список с вариантами (при этом одно из значений было бы выбрано)

191
Параметр fixedFrom в dbml.layout

Параметр fixedFrom в dbml.layout

Для чего предназначены параметры fixedFrom и fixedTo в dbmllayout файле?

203