Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
28 / 28 / 5
Регистрация: 07.09.2012
Сообщений: 119

Не работает пример, демонстрирующий блокирующую коллекцию

17.12.2012, 14:19. Показов 847. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста разобраться со следующим кодом (взят из книги Шилдта)
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
using System; 
using System.Threading.Tasks; 
using System.Threading; 
using System.Collections.Concurrent; 
class BlockingDemo { 
static BlockingCollection<char> bc; 
// Произвести и поставить символы от А до Z. 
static void Producer() { 
for(char ch = 'А'; ch <= 'Z'; ch++) { 
bc.Add(ch); 
Console.WriteLine("Производится символ " + ch) ; 
} 
} 
// Потребить 26 символов, 
static void Consumer() { 
for(int i=0; i < 26; i++) 
Console.WriteLine ("Потребляется символ " + bc.Take()); 
} 
static void Main() { 
// Использовать блокирующую коллекцию, ограниченную 4 элементами,
bc = new BlockingCollection<char>(4); 
// Создать задачи поставщика и потребителя. 
Task Prod = new Task(Producer); 
Task Con = new Task(Consumer); 
// Запустить задачи. 
Prod.Start();
Con.Start();
// Ожидать завершения обеих задач, 
try { 
Task.WaitAll(Con, Prod); 
} catch(AggregateException exc) { 
Console.WriteLine(exc); 
} finally { 
Con.Dispose (); 
Prod.Dispose(); 
bc.Dispose (); 
} 
} 
}
Почему он может не работать? компилятор не ругается вообще, но прога просто не оканчивается. Своих изменений в программу будто бы не вносил...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.12.2012, 14:19
Ответы с готовыми решениями:

Нужен пример, демонстрирующий работу udpClient
Добрый день. Вот начал работать с udpClient и у меня появился вопрос а как правильно всё делать? Подскажите правильным примером для...

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

Простой пример иерархии классов, демонстрирующий полиморфный вызов метода
Приведите пример простой иерархии классов, демонстрирующий полиморфный вызов метода (работа с классом-наследником через ссылку на базовый...

2
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
17.12.2012, 14:28
temcha, что значит "не оканчивается"?
0
28 / 28 / 5
Регистрация: 07.09.2012
Сообщений: 119
17.12.2012, 15:01  [ТС]
жму Ctrl+F5 и ничего не происходит - мигает нижний слеш "_" и все.

Добавлено через 14 минут
Все, разобрался. Всем спасибо. Проблема была в том, что при копировании кода буква английского алфавита А распозналась как русская или что то в этом духе.

Добавлено через 10 минут
Теперь новый вопрос: по идее, если строку
C#
1
bc = new BlockingCollection<char>(4);
изменить на
C#
1
bc = new BlockingCollection<char>(1);
то результат выполнения программы должен иметь вид поочередного добавления и потребления символа (т.к. установлено ограничение в 1 единицу, что в свою очередь означает, что при достижении этого лимита задача должна блокироваться до освобождения места в коллекции.
Тем не менее, результат немного не такой, а именно:
Производится символ A
Потребляется символ A
Производится символ B
Производится символ C
Потребляется символ B
Потребляется символ C
................................
Каким образом возможен такой результат?
 Комментарий модератора 
Одна тема - один вопрос
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.12.2012, 15:01
Помогаю со студенческими работами здесь

Написать резидентную программу, блокирующую доступ к каталогу
Добрый день! У меня задание: написать резидентную программу,блокирующую доступ к каталогу, и возобновляющую доступ при вводе...

Написать программу, блокирующую изменение некоторых файлов и ключей реестра
Здравствуйте. Нужно написать программу, блокирующую изменение некоторых файлов и ключей реестра. Подскажите, пожалуйста, с помощью...

Не работает (видимо) байндинг при добавлении в коллекцию из другого потока (MVVM)
В общем, написал программу (WPF). Когда весь код был в MainWindow.xaml.cs, то такой код нормально работал: private...

Разобрать код, демонстрирующий работу с указателями
Здравствуйте. Помогите пожалуйста разобраться с работой указателей. #include &lt;iostream&gt; using namespace std; int main() ...

Оценить код, демонстрирующий заполнение стека
pascal void sumpas(int a, int b){ printf(&quot;&amp;a = %x\n&quot;, &amp;a); printf(&quot;&amp;b = %x\n&quot;, &amp;b); } цель посмотреть как заполняется...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru