.NET 4.x Lock как правильно использовать? - C#
Формулировка задачи:
Ребят, я тут только с lock-ом разбираюсь...
Я так понял что его параметр это ключ доступа, соответственно с разным ключом в один и тот же блок не зайдёшь и как "писали где-то" , - "все остальные потоки ждут".
Мне нужно ограничить доступ к одной и той же переменной, которую использует поток. Я попытался сделать вот так, с расчётом на то что пока поток1 не выйдет из блока, второй к его составляющим (_result) не достучится.
Но 2й поток свободно берёт переменную и использует её (кидает меседж бокс).
Как заблочить доступ к полю для всех потоков, пока "какой-то" один его использует?
Листинг программы
- new Thread(() =>
- {
- Object thisLock = new Object();
- lock (thisLock)
- {
- _result = SET_XML_PATH_PC(AppDomain.CurrentDomain.BaseDirectory);
- MessageBox.Show(_result.ToString());
- }
- }).Start();
- new Thread(() => {
- Thread.Sleep(500); //это для проверки... ну мало ли, второй влазит вперёд первого потока...
- MessageBox.Show(_result.ToString());
- }).Start();
Решение задачи: «.NET 4.x Lock как правильно использовать?»
textual
Листинг программы
- Object thisLock = new Object();
- new Thread(() =>
- {
- var result = SET_XML_PATH_PC(AppDomain.CurrentDomain.BaseDirectory);
- lock (thisLock)
- _result = result;
- MessageBox.Show(_result.ToString());
- }).Start();
- new Thread(() => {
- Thread.Sleep(500); //это для проверки... ну мало ли, второй влазит вперёд первого потока...
- TypeOfResult result;
- lock (thisLock)
- result = _result;
- MessageBox.Show(result.ToString());
- }).Start();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д