Темная сторона .Net
![]() 592 / 489 / 39
Регистрация: 21.07.2012
Сообщений: 1,668
|
|
1 | |
Как закинуть нужные расчеты в отдельный поток13.08.2012, 18:06. Показов 2678. Ответов 21
Метки нет Все метки)
(
Вообщем считаю что так и должно быть так как она читает\читает\читает.
//все норм и с памятью и с алгоритмом Как сделать что бы форма не висла? Думаю закинуть нужные расчеты в отдельный поток. Добавлено через 36 секунд То-есть что я продолжал работу с ней.Например текст вводил в боксы.
0
|
13.08.2012, 18:06 | |
13.08.2012, 18:06 | |
Ответы с готовыми решениями:
21
Как из документа из нескольких страниц выбрать нужные строчки в отдельный файл? Как вывести в отдельный поток?
|
![]() 1454 / 846 / 150
Регистрация: 06.06.2012
Сообщений: 2,370
|
|
13.08.2012, 18:15 | 2 |
1
|
![]() 47 / 47 / 9
Регистрация: 13.02.2012
Сообщений: 176
|
|
13.08.2012, 18:24 | 3 |
Решить, только дополнительным потоком.
Смотри в сторону BackgroundWorker или через Task в TPL там еще проще.
1
|
Темная сторона .Net
![]() 592 / 489 / 39
Регистрация: 21.07.2012
Сообщений: 1,668
|
|
13.08.2012, 18:35 [ТС] | 4 |
а с BackgroundWorker вот сюда _DoWork надо пихать свои методы?
А я то думал,как его использовать,System/Thread есть,зачем еще ![]() принцип тот же что и с потоками? и приостанавливать могу? Добавлено через 1 минуту
0
|
![]() 47 / 47 / 9
Регистрация: 13.02.2012
Сообщений: 176
|
|
13.08.2012, 18:42 | 5 |
Принцип тот же что и с потоками, если с ними раньше работал, только даже лучше
![]() Прочитай на msdn там как раз пример с прогресс баром http://msdn.microsoft.com/ru-r... orker.aspx
1
|
Темная сторона .Net
![]() 592 / 489 / 39
Регистрация: 21.07.2012
Сообщений: 1,668
|
|
13.08.2012, 18:55 [ТС] | 6 |
Не могу понять,можно его остановить а потом запустить с того же места?
Потоку мы говорим Sleep,а вот BackgroundWarker так не умеет( Добавлено через 3 минуты Иду к истокам(потокам хД),пока никто не остановил Добавлено через 28 секунд А и прогресс все равно самому считать,не в топку
0
|
Неадекват
![]() 1497 / 1234 / 247
Регистрация: 02.04.2010
Сообщений: 2,804
|
|
13.08.2012, 22:49 | 7 |
А зачем? Расход лишних ресурсов, если требуется возможность паузы, то сохраняем промежуточный результат расчетов, а потом запускаем BW уже не с начала.
Прогресс в любом случае вручную считать, но BW имеет одно несравненное преимущество - прозрачное межпоточное взаимодействие. Чтобы отобразить прогресс или получить данные из потока не придется заморачиваться с Invoke'ми. Да и код получается более компактным и коротким нежели при кодинге ручками через Thread'инги.
1
|
Неадекват
![]() 1497 / 1234 / 247
Регистрация: 02.04.2010
Сообщений: 2,804
|
|
13.08.2012, 22:59 | 8 |
Вот небольшой пример использования BW.
1
|
Темная сторона .Net
![]() 592 / 489 / 39
Регистрация: 21.07.2012
Сообщений: 1,668
|
|
13.08.2012, 23:12 [ТС] | 9 |
Спасибо) уже сделал и так и так)
Расчеты связаны с файлами по-этому не все так просто)
0
|
Темная сторона .Net
![]() 592 / 489 / 39
Регистрация: 21.07.2012
Сообщений: 1,668
|
|
13.08.2012, 23:14 [ТС] | 11 |
У мя через потоки получилось меньше кода =)
А где инфу почитать о потоках и ихнем Invoke
0
|
![]() ![]() |
||||||
13.08.2012, 23:17 | 12 | |||||
Апдейт. Исправил чуток на более нормальный вариант.
1
|
Темная сторона .Net
![]() 592 / 489 / 39
Регистрация: 21.07.2012
Сообщений: 1,668
|
|
13.08.2012, 23:21 [ТС] | 13 |
Вижу,это наш делегат.
А выполняется(Инвоук) он в том потоке в котором вызван или в главном? Добавлено через 3 минуты Так понимаю,нужно если доступ из другого потока?
0
|
![]() ![]() |
|
13.08.2012, 23:23 | 14 |
Я уже раз 10 код отредактировал. Это просто с старого одного проекта. Поправил и сделал более нормально.
Добавлено через 49 секунд Да. Если иногда нужно обновлять значение из другого потока, то метод такой пригодится. Добавлено через 34 секунды Можно вообще несколько универсальных сделать и ими пользоваться.
1
|
Темная сторона .Net
![]() 592 / 489 / 39
Регистрация: 21.07.2012
Сообщений: 1,668
|
|
13.08.2012, 23:23 [ТС] | 15 |
(Action<int>) - передает локальную переменную?
нет..что-то не то тут
0
|
![]() ![]() |
|||||||||||
13.08.2012, 23:28 | 16 | ||||||||||
Это вместо
Смотри. Если вызвали метод с основного потока, то выполнится блок else, а если вызвали с другого потока, то метод рекурсивно вызовет сам себя через Invoke и уже выполнится во время второго вызова блок else, это просто сокращает кол-во строк кода, как минимум. Да и вполне себе вариант.
1
|
Темная сторона .Net
![]() 592 / 489 / 39
Регистрация: 21.07.2012
Сообщений: 1,668
|
|
13.08.2012, 23:30 [ТС] | 17 |
Понял,приведения типов)
Добавлено через 53 секунды Там разница небольшая,если я правильно понял.Во 2 неявно вызывается тот же метод что и в 1.
0
|
![]() ![]() |
||||||
13.08.2012, 23:32 | 18 | |||||
Ну или так, думаю прошлые варианты красивее:
0
|
Темная сторона .Net
![]() 592 / 489 / 39
Регистрация: 21.07.2012
Сообщений: 1,668
|
|
13.08.2012, 23:35 [ТС] | 19 |
Не это уже на извращение похоже..,хотя на счет функционала не скажу.
Но вот когда перейду хотя бы на 3 фрейм - поддержу)
0
|
![]() ![]() |
|
13.08.2012, 23:40 | 20 |
Добавлено через 20 секунд Ну да, скорее так и есть, по крайней мере выглядит внешне.
0
|
13.08.2012, 23:40 | |
13.08.2012, 23:40 | |
Помогаю со студенческими работами здесь
20
Как сделать отдельный поток в C++? Как создать отдельный поток ? Как вынести подключение к БД в отдельный поток? Как поместить контрол в отдельный поток? Функция класса, как отдельный поток Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
![]() |
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
Микросервис с нуля на Go с Kafka
stackoverflow 12.02.2025
Когда я впервые столкнулся с необходимостью разделить монолитное приложение на микросервисы, передо мной встал вопрос выбора правильных технологий и подходов. После долгих экспериментов с различными. . .
|
Микросервис с нуля на C# с RabbitMQ
stackoverflow 12.02.2025
Переход от монолитной архитектуры к микросервисной - это не просто модное веяние, а закономерный этап эволюции программных систем. В отличие от монолита, где все компоненты тесно связаны между собой. . .
|
Docker для начинающих
stackoverflow 12.02.2025
В современном мире разработки программного обеспечения все чаще возникает необходимость быстро и надежно разворачивать приложения в различных средах. Разработчики постоянно сталкиваются с проблемой. . .
|
Создание бота для Телеграм на C#
stackoverflow 12.02.2025
В современном мире корпоративных коммуникаций Telegram-боты становятся незаменимым средством автоматизации бизнес-процессов и взаимодействия с сотрудниками. Как создать такого бота, который сможет. . .
|
Операторы сравнения (== и ===) в JavaScript
hw_wired 12.02.2025
JavaScript предоставляет два основных оператора сравнения - оператор нестрогого равенства (==) и оператор строгого равенства (===). На первый взгляд они могут показаться очень похожими, но их. . .
|
Определение адреса, откуда репозиторий Git был клонирован
hw_wired 12.02.2025
Система контроля версий Git хранит всю информацию о репозитории в специальной директории . git, включая данные об удаленных источниках. Эта информация необходима для синхронизации изменений между. . .
|
Объединение нескольких коммитов Git в один
hw_wired 12.02.2025
Представьте, что вы работаете над новой функциональностью и создали десяток небольших коммитов: исправление опечатки, форматирование кода, добавление комментариев, реализация основной логики. Каждый. . .
|
Как добавить локальную ветку в удалённый репозиторий Git
hw_wired 12.02.2025
Локальная ветка в Git - это изолированная линия разработки, существующая только на вашем компьютере. Представьте себе дерево с множеством веток - каждая ветка может расти в своем направлении, не. . .
|
Статическое отражение в C++
stackoverflow 12.02.2025
Статическое отражение представляет собой мощный механизм, позволяющий программам анализировать и манипулировать своей собственной структурой во время компиляции. Эта возможность открывает. . .
|
C++ в 21 веке - Бьярне Страуструп
stackoverflow 12.02.2025
В современном мире разработки программного обеспечения C++ продолжает оставаться одним из ключевых языков программирования, несмотря на свой солидный возраст - более 45 лет с момента создания. За это. . .
|