Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
13 / 15 / 5
Регистрация: 01.05.2013
Сообщений: 357

Как правильно организовать многопоточное приложение?

28.05.2014, 08:04. Показов 1910. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
У меня есть код части программы:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int z = 0;
if (z == 0)
            {
z++;
Thread z2 = new Thread(_ =>
{
while (true)
{
//код
}
 
});
z2.Start();
}
else
{
z2.Stop();
z--;
}
Но он не может работать так-как поток создаётся внутри скобок (не знаю как это называется). Как нужно построить поток, что бы он обращался именно к этой части?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.05.2014, 08:04
Ответы с готовыми решениями:

Как правильно завершить многопоточное приложение
Я пишу многопоточное приложение. После нажатия кнопку на закрытия главного окна (красный крестик) приложение какбы закрывается, но потом...

Как правильно организовать приложение?
Нужно написать приложение - конструктор экстремальных задач. В аплете клиент из частей(симплекс-метод, производная, ....) собирает задачу,...

Как создать многопоточное приложение на VB
Нужно запустить несколько процессов (несколько копий одного метода класса с разными параметрами) чтобы они выполнялись паралельно и чтобы...

14
 Аватар для Spawn
995 / 893 / 354
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
28.05.2014, 08:57
С if...else у Вас проблемы?
Объявление потока выносим за if.
Метода Stop тем не менее на потоке всё равно нет...
1
13 / 15 / 5
Регистрация: 01.05.2013
Сообщений: 357
28.05.2014, 12:43  [ТС]
Spawn, да. С if и else проблемы. Но как указать, что отдельным потоком должен быть именно тот код, что после if?
0
 Аватар для Spawn
995 / 893 / 354
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
28.05.2014, 13:00
Лучший ответ Сообщение было отмечено jwplaster как решение

Решение

Цитата Сообщение от jwplaster Посмотреть сообщение
Но как указать, что отдельным потоком должен быть именно тот код, что после if?
в смысле указать? Те магические палочки/стрелочки, назначение которых Вы не знаете - анонимная функция. Компилятор за Вас доделает необходимое. Вот так можно записать:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
        void SomeMethod()
        {
            Thread z2 = null;
            if (z == 0)
            {
                z++;
                z2 = new Thread(new ThreadStart(MyMethod));
                z2.Start();
            }
            else
            {
                if (z2 != null)
                    z2.Stop();
                z--;
            }
        }
 
        private void MyMethod()
        {
            // код в отдельном потоке выполняется
        }
1
13 / 15 / 5
Регистрация: 01.05.2013
Сообщений: 357
28.05.2014, 13:11  [ТС]
Spawn, так не получится сделать. Выдаёт ошибку на несовместимость.
0
 Аватар для Spawn
995 / 893 / 354
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
28.05.2014, 13:12
jwplaster, на какую совместимость? Сообщение об ошибке какое?
1
13 / 15 / 5
Регистрация: 01.05.2013
Сообщений: 357
28.05.2014, 13:16  [ТС]
Spawn, Нет перегруженного метода для "MyMethod", который соответствует делегату "System.Threading.ThreadStart"
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
28.05.2014, 13:20
jwplaster, а вы не могли бы озвучить цель? Что в итоге надо получить?
1
13 / 15 / 5
Регистрация: 01.05.2013
Сообщений: 357
28.05.2014, 13:22  [ТС]
insite2012, при нажатии на определённую кнопку начинается выполняться цикл в отдельном потоке. При нажатии ещё раз - он прекращается.
0
 Аватар для Spawn
995 / 893 / 354
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
28.05.2014, 13:25
Цитата Сообщение от jwplaster Посмотреть сообщение
Spawn, Нет перегруженного метода для "MyMethod", который соответствует делегату "System.Threading.ThreadStart"
Вы заголовок метода MyMethod не рискнули поменять случаем?
1
13 / 15 / 5
Регистрация: 01.05.2013
Сообщений: 357
28.05.2014, 13:27  [ТС]
Spawn, я поменял, просто для понятности написал это
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
28.05.2014, 13:31
jwplaster, надо для WinForms?
1
 Аватар для Spawn
995 / 893 / 354
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
28.05.2014, 13:31
Цитата Сообщение от jwplaster Посмотреть сообщение
Spawn, я поменял, просто для понятности написал это
Вы, видимо, не поняли, что этого делать нельзя было...
1
13 / 15 / 5
Регистрация: 01.05.2013
Сообщений: 357
28.05.2014, 13:40  [ТС]
insite2012, нет. Кнопка собственного производства.
Spawn, так я и в z2 = new Thread(new ThreadStart(hhh)); поменял же....

Добавлено через 7 минут
Всё. Нашел ошибку. Она была в вызывании переменной из ().
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
28.05.2014, 13:40
Цитата Сообщение от jwplaster Посмотреть сообщение
Кнопка собственного производства.
Не понял... Для консоли что-ли?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.05.2014, 13:40
Помогаю со студенческими работами здесь

Как создать многопоточное приложение на Си
Подскажите пожалуйста,какие способы использовать,для создания дополнительный потоков из своего кода. Пишу на Си под Windows,компиляция...

Многопоточное приложение
Добрый день. Интересует вопрос насколько правильно будет использование в С++ Builder компонента TTimer для многопоточности. Либо правильнее...

Многопоточное приложение
У кого есть примеры многопоточных приложений или игр? Вот пример игры с 2мя шариками они летают, им можно поменять цвет: Консольное...

Многопоточное приложение
Здравствуйте! Создаю многопоточное приложение опроса портов. Столкнулся с ситуацией, когда часть потоков не исполняется (для теста...

Многопоточное приложение
Совсем запарился, помогите. Задание: Разработать программу, которая создает в отдельном потоке случайный массив А из N целых чисел в...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
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, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru