.NET 4.x Lock как правильно использовать? - C#

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

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

Ребят, я тут только с lock-ом разбираюсь... Я так понял что его параметр это ключ доступа, соответственно с разным ключом в один и тот же блок не зайдёшь и как "писали где-то" , - "все остальные потоки ждут". Мне нужно ограничить доступ к одной и той же переменной, которую использует поток. Я попытался сделать вот так, с расчётом на то что пока поток1 не выйдет из блока, второй к его составляющим (_result) не достучится. Но 2й поток свободно берёт переменную и использует её (кидает меседж бокс). Как заблочить доступ к полю для всех потоков, пока "какой-то" один его использует?
Листинг программы
  1. new Thread(() =>
  2. {
  3. Object thisLock = new Object();
  4. lock (thisLock)
  5. {
  6. _result = SET_XML_PATH_PC(AppDomain.CurrentDomain.BaseDirectory);
  7. MessageBox.Show(_result.ToString());
  8. }
  9. }).Start();
  10. new Thread(() => {
  11. Thread.Sleep(500); //это для проверки... ну мало ли, второй влазит вперёд первого потока...
  12.  
  13. MessageBox.Show(_result.ToString());
  14. }).Start();

Решение задачи: «.NET 4.x Lock как правильно использовать?»

textual
Листинг программы
  1.  Object thisLock = new Object();
  2. new Thread(() =>
  3.             {
  4.                 var result = SET_XML_PATH_PC(AppDomain.CurrentDomain.BaseDirectory);
  5.                 lock (thisLock)
  6.                     _result = result;
  7.                
  8.                 MessageBox.Show(_result.ToString());
  9.             }).Start();
  10.             new Thread(() => {
  11.                 Thread.Sleep(500); //это для проверки... ну мало ли, второй влазит вперёд первого потока...
  12.                
  13.                 TypeOfResult result;
  14.                 lock (thisLock)
  15.                    result = _result;
  16.  
  17.                 MessageBox.Show(result.ToString());
  18.                                
  19.             }).Start();

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


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

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

10   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы