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

Класс task и background worker

01.10.2015, 20:04. Показов 2057. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У нас есть приложение с пользовательским интерфейсом. Во время работы приложения происходят длительные вычисления. в чем будет различие применения этих классов? Может кто-нибудь объяснить?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.10.2015, 20:04
Ответы с готовыми решениями:

Thread? Task? Background worker?
Доброго вечера/ночи/утра/дня! Снова, наверное, глупый вопрос, который не могу решить. Помогите, пожалуйста. Суть такова: есть два...

Перезапуск background worker
Здравствуйте. Помогите организовать перезапуск. Смотрел вот это, но так и ничего не понял. private void _bw_DoWork(object sender,...

Background Worker событие completed не вызывается
Всем привет. Есть класс bypasser, у него есть наследник Cloudflare. В bypasser есть метод Start, создающий бекграунд воркер и...

10
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
01.10.2015, 20:30
Цитата Сообщение от Алерон Посмотреть сообщение
в чем будет различие применения этих классов?
Легко.
Если по простому, то при использовании Task вам придется реализовывать многие вещи вручную (события для сообщений пользователю, обработка исключений в потоке, маршалинг в поток UI).
BackgroundWorker предоставляет это все "из коробки", готовое.
1
5 / 5 / 3
Регистрация: 13.10.2009
Сообщений: 543
01.10.2015, 20:42  [ТС]
insite2012, а в чем минусы и плюсы использования(тасков и беков)? По сути я бы все свои вычисление кидал в бекграунд, так как ни о чём думать особо не надо + гарантируется потокобезопасность.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
01.10.2015, 20:50
Лучший ответ Сообщение было отмечено Metall_Version как решение

Решение

Цитата Сообщение от Алерон Посмотреть сообщение
в чем минусы и плюсы использования(тасков и беков)?
В общем, выше я уже кратко ответил.
В случае с тасками вы обладаете полной свободой, но и должны продумать все мелочи.
С BGW вы освобождены от многих мелочей, но при этом привязаны к заданной реализации, с возможностью изменить ее лишь в небольших пределах.
1
5 / 5 / 3
Регистрация: 13.10.2009
Сообщений: 543
01.10.2015, 21:32  [ТС]
insite2012, а при использования тасков, пользовательский интерфейс, случаем не будет подвисать?
0
-15 / 10 / 6
Регистрация: 03.10.2012
Сообщений: 532
01.10.2015, 21:47
Не мучайся.... У меня тоже в клиенте есть while бесконечный.... И я справляюсь с помощью отдельного потока, а тут когда открыл недавно для себя CallBack - жизнь наладилась вообще на пять с плюсом.

Смотри! Делаешь так:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public void WhileTrue(Action<int> CallBackMethod) //Action<int> - int означает что тут 1 агрумент типа int. типа - OnTickMethod(int i)
        {
            (new Thread(delegate () {
                int i = 0;
                while(true) {
                    Thread.Sleep(1000);
                    i = (i > 60) ? 0 : i + 1;
                    CallBackMethod(i);
                }
            })).Start();
        }
        public void Main()
        {
            WhileTrue(OnTickMethod); // Отправляем в аргументе ссылку на функцию.
        }
        public void OnTickMethod(int i)
        {
            this.Invoke(new Action(() => // Конструкция из Invoke позваляет другому процессу взаимодействовать с интерфейсом - иначе краш. Только в WindowsForms!
            {
                richTextBox1.Text = i.ToString();
            }));
        }
Сори... на коленке накидал. Думаю поймешь.
Главное тут это выполнять в новом потоке а уже отображать через конструкцию с Invoke в интерфейсе уже. У мя так всё работает и нет не каких проблем - главное не забывать про Invoke в местах вывода инфы в интерфейсе.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
01.10.2015, 22:00
Цитата Сообщение от Алерон Посмотреть сообщение
при использования тасков, пользовательский интерфейс, случаем не будет подвисать?
Не будет.
1
5 / 5 / 3
Регистрация: 13.10.2009
Сообщений: 543
01.10.2015, 22:04  [ТС]
insite2012, а что означает "привязаны к заданной реализации"?
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
01.10.2015, 22:10
Цитата Сообщение от Алерон Посмотреть сообщение
что означает "привязаны к заданной реализации"?
То, что если вы используете BGW, то вы зависимы от того, как он реализован в FCL. Изменить заданную реализацию можно, но лишь в небольших пределах.
0
5 / 5 / 3
Регистрация: 13.10.2009
Сообщений: 543
01.10.2015, 22:14  [ТС]
insite2012, мол нет таких "ништяков" с остановкой /продолжением / управлением потоками как в таске? В общем говоря нет гибкой настройки, верно? И применять бек стоит из ходя из его названия.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
01.10.2015, 22:19
Цитата Сообщение от Алерон Посмотреть сообщение
ет таких "ништяков" с остановкой /продолжением / управлением потоками как в таске?
Он (BGW) в чем-то удобнее, в чем-то нет. Все зависит от решаемой задачи.
Я неоднократно использовал наследование от него, в своих программах, и мне понравилось его использование.
В общем, смотрите сами, какую задачу решаете, и используйте то, что более всего вам подходит.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.10.2015, 22:19
Помогаю со студенческими работами здесь

[Error] no matching function for call to 'worker::worker()' (Worker-структура)
#include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;cstring&gt; using namespace std; struct worker { worker (worker* w, int n); ...

Создать класс Worker
Доброго времени суток! Есть такая задачка: создать класс Worker с полями, задающими фамилию работника, фамилии руководителя и подчиненных и...

Изменить класс Worker
В класс Worker добавить поле СТАЖ и ввести специальные функции для записи возраста и стажа. Функции будут, в частности, проверять...

Класс worker и work
Я создала класс worker. В нем есть поля имя фамилия возраст и id. И есть класс work. Он должен выводить информацию о работнике по индексу....

Описать класс Worker
Разработать класс для описанных ниже объектов. Включить в класс методы set (...), get (...), show (...) Worker: Фамилия, Имя, Отчество,...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru