как использовать мьютекс (Mutex)

310
11 ноября 2017, 10:38

Не могу разобраться как добавить мьютекс,в форме есть 6 pictureBox-ов, каждые t секунды меняет цвет первой части, в ответ на изменение цвета в первой части, вторая часть с задержкой в x секунд меняет свой цвет идентичный цвету в первой части. Каждая последующая часть зависит от предыдущей (3 от 2, 4 от 3 и т.д.), алгоритм действий для частей идентичен алгоритму для 2 части.

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        class SharedRes
        {            
            public static Mutex mtx = new Mutex();           
        }
        private void button1_Click(object sender, EventArgs e)
        {
            Thread picture1 = new Thread(func); //Создаем новый объект потока (Thread)          
            Thread picture2 = new Thread(func2);
            Thread picture3 = new Thread(func3);
            Thread picture4 = new Thread(func4);
            Thread picture5 = new Thread(func5);
            Thread picture6 = new Thread(func6);
            picture1.Start(); //запускаем поток
            picture2.Start();
            picture3.Start();
            picture4.Start();
            picture5.Start();
            picture6.Start();

        }
        public void func()
        {         
            while(true)
            {
                Thread.Sleep(2000);           
                Random rdm = new Random();
                Color randomColor = Color.FromArgb(rdm.Next(255), rdm.Next(255), rdm.Next(255));
                pictureBox1.BackColor = randomColor;
            }
        }
        public void func2()
        {
            while (true)
            {
                Thread.Sleep(2500);
                SharedRes.mtx.WaitOne();
                pictureBox2.BackColor = pictureBox1.BackColor;
            }
        }
        public void func3()
        {
            while (true)
            {
                Thread.Sleep(3000);
                SharedRes.mtx.WaitOne();
                pictureBox3.BackColor = pictureBox2.BackColor;
            }
        }
        public void func4()
        {
            while (true)
            {
                Thread.Sleep(3500);
                SharedRes.mtx.WaitOne();
                pictureBox4.BackColor = pictureBox3.BackColor;
            }
        }
        public void func5()
        {
            while (true)
            {
                Thread.Sleep(2500);
                pictureBox5.BackColor = pictureBox4.BackColor;
            }
        }
        public void func6()
        {
            while (true)
            {
                Thread.Sleep(2500);
                pictureBox6.BackColor = pictureBox5.BackColor;
            }
        }
        public void funcfinal()
        {
        }
    }
READ ALSO
Assembly interpreter code на С#

Assembly interpreter code на С#

Я пишу assembly interpreter code в C#

353
Как правильно создавать объекты?

Как правильно создавать объекты?

Слышал что не рекомендуется использовать оператор new где попалоЕго необходимо изолировать в отдельном классе который будет отвечать за создания...

311
Свойства-расширения в C#

Свойства-расширения в C#

Возможно ли сделать свойство-расширение для класса? Например у меня есть такой метод-расширение:

295
c# не работают стандартные библиотеки в CUDA проекте

c# не работают стандартные библиотеки в CUDA проекте

Среда Visual Studio 2017Изучаю CUDA программирование, делаю по этому уроку https://www

347