Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
70 / 69 / 10
Регистрация: 14.06.2009
Сообщений: 310
Записей в блоге: 1
1

Monitor.Wait() Monitor.Pulse();

17.06.2010, 15:04. Показов 2507. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
есть главный поток и рабочий поток(WorkThread)

запускаю рабочий поток из главного

C#
1
2
WorkThread = new Thread(Work);
WorkThread.Start();
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
        bool On;
        object locker = new object();
 
        private void Work()
        {
            lock (locker)
            {
                while (On)
                { 
                       func1();
                       func2();
                       func3();                   // Куда в этой части кода нужно вставить Monitor.Wait(locker);
                       func4();
                       func5();             
                }
            }
        }

есть 2 кнопки

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
        private void btnResume_Click(object sender, EventArgs e)
        {
            lock (locker)
            {
                On = true;
                Monitor.Pulse(locker);
            }
        }
 
        private void btnStop_Click(object sender, EventArgs e)
        {
                 // ????
        }
итоговая цель:
по кнопке btnStop рабочий поток приостанавливается (!)
по кнопке btnResume возобновляется с места остановки

какой код должен быть в btnStop_Click ?
куда вставить Monitor.Wait(Locker) во второй части кода?

добился только чтобы поток замирал после завершения while , а нужно чтобы сразу

Добавлено через 54 секунды
либо подскажите другие конструкции для решения моей проблемы пжл (:

Добавлено через 21 час 52 минуты
кто-нибудь xD посоветуйте)

Добавлено через 20 часов 15 минут
никто не юзает паузу в приложениях? нужны функции типа Thread.Suspend ; Thread.Resume, но компилятор жалуется что они устаревшие...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.06.2010, 15:04
Ответы с готовыми решениями:

Синхронизация поков через Monitor
Есть такой пример в книге Рихтера internal sealed class Transaction { // Поле, показывающее...

Monitor, Semaphor, Mutex. что за кадром?
Что при этом происходит в системе? (Как это реализовано?) Например, во что превращается код:...

Sleep or Wait
Добрый день вот можно сказать начал изучать С# два дня назад и наткнулся на не большую проблему....

Task.Wait() внутри foreach
Добрых времени суток. Есть 2 вложенных foreach'a, внутри последнего необходимо выполнить...

0
17.06.2010, 15:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.06.2010, 15:04
Помогаю со студенческими работами здесь

Semaphore Wait(int millisecondsTimeout)
Добрый день. Разбираюсь в многопоточном программировании. Скажите пожалуйста, что именно означает...

Task.Wait async Метод
Всем привет. Нужна помощь. Я в сеттере (нужно именно тут) создаю таск Task task = new Task(Load);...

Как сделать при нажатии на кнопку (отправлении команды во ViewModel) Cursor.Wait у окна?
Здравствуйте, возникла жуткая потребность, чтобы сделать при нажатии на кнопку (отправлении команды...

Синхронизация потоков: объясните логику действия методов Pulse и Wait
Ребята, объясните пожалуйста логику действия методов Pulse() и Wait()? не пойму, что делает каждый...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru