powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Замена для backgroundWorker.
25 сообщений из 42, страница 1 из 2
Замена для backgroundWorker.
    #39126653
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
До сих пор все было хорошо. Создавал несколько backgroundWorker и работал с ними. Вобщем то был доволен. Но тут мне объяснили что это зло. А чем заменить? Thread? Task?
...
Рейтинг: 0 / 0
Замена для backgroundWorker.
    #39126670
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7Вобщем то был доволен. Но тут мне объяснили что это зло.

А пояснили почему зло?
...
Рейтинг: 0 / 0
Замена для backgroundWorker.
    #39126676
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7,

советую вам поменьше прислушиваться к необоснованным мнениям. Даже в MS на MSDN часто рекомендуют использовать BackgroudWorker.
Может это и несколько устаревшая технология, но она работает, значит заслуживает права быть.
Зло это давать глупые советы, вот это воистину зло :)
...
Рейтинг: 0 / 0
Замена для backgroundWorker.
    #39126681
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVosttjenya7Вобщем то был доволен. Но тут мне объяснили что это зло.

А пояснили почему зло?

ну вот потому что Roman Mejtes сказал - устаревшая технология.
...
Рейтинг: 0 / 0
Замена для backgroundWorker.
    #39126683
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я не знаю что "под капотом" у backgroundWorker.
Тут вроде все прозрачно
Код: c#
1.
2.
3.
4.
5.
6.
7.
    Thread aa = new Thread(GetData);
    aa.Start();

     или

    Task bb = new Task(GetData);
    bb.Start();
...
Рейтинг: 0 / 0
Замена для backgroundWorker.
    #39126684
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почитай Дж. Рихтер CLR via C# . Часть V. Многопоточность.
Там все возможные варианты расписаны с плюсами и минусами. Выбери что больше подходит.
...
Рейтинг: 0 / 0
Замена для backgroundWorker.
    #39126685
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima TПочитай Дж. Рихтер CLR via C# . Часть V. Многопоточность.
Там все возможные варианты расписаны с плюсами и минусами. Выбери что больше подходит.
спасибо. у меня эта книжка где то есть. поищу.
...
Рейтинг: 0 / 0
Замена для backgroundWorker.
    #39126687
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7, если не в контексте с UI, действительно, зачем они нужны?
...
Рейтинг: 0 / 0
Замена для backgroundWorker.
    #39126689
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Где-то в степиjenya7, если не в контексте с UI, действительно, зачем они нужны?
в основном конечно что бы UI не зависал.
...
Рейтинг: 0 / 0
Замена для backgroundWorker.
    #39127073
blest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7,

На моем пути тоже бывало встречались люди, который говорили - делай так, как я говорю и даже не спрашивай почему, потом спасибо скажешь =)

По существу после выхода в C# 5.0 await/async пользуюсь только им, backgroundworker для меня отошел в историю
...
Рейтинг: 0 / 0
Замена для backgroundWorker.
    #39127147
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7,
В .NET асинхронные вычисления можно запустить следующими способами.
1. класс Thread
2. delegate.BeginInvoke - этот функционал использует BackgroundWorker
3. Task, начиная с C# 5.0 - await/async
4. при помощи реактивных расширений
5. Parallel class, но там тоже внутри таски
6. Как экзотика или на крайний случай, через Win API.
Вроде все, дополните если упустил чего.
...
Рейтинг: 0 / 0
Замена для backgroundWorker.
    #39127151
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЕвгенийВjenya7,
В .NET асинхронные вычисления можно запустить следующими способами.
1. класс Thread
2. delegate.BeginInvoke - этот функционал использует BackgroundWorker
3. Task, начиная с C# 5.0 - await/async
4. при помощи реактивных расширений
5. Parallel class, но там тоже внутри таски
6. Как экзотика или на крайний случай, через Win API.
Вроде все, дополните если упустил чего.

я думаю Thread и Task наше все. а какая разница между ними?
...
Рейтинг: 0 / 0
Замена для backgroundWorker.
    #39127154
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
jenya7ЕвгенийВjenya7,
В .NET асинхронные вычисления можно запустить следующими способами.
1. класс Thread
2. delegate.BeginInvoke - этот функционал использует BackgroundWorker
3. Task, начиная с C# 5.0 - await/async
4. при помощи реактивных расширений
5. Parallel class, но там тоже внутри таски
6. Как экзотика или на крайний случай, через Win API.
Вроде все, дополните если упустил чего.

я думаю Thread и Task наше все. а какая разница между ними?

о! нашел!

Код: sql
1.
2.
3.
4.
5.
In computer science terms, a Task is a future or a promise. (Some people use those two terms synomymously, some use them differently, nobody can agree on a precise definition.) Basically, a Task<T> "promises" to return you a T, but not right now honey, I'm kinda busy, why don't you come back later?

A Thread is a way of fulfilling that promise. But not every Task needs a brand-new Thread. (In fact, creating a thread is often undesirable, because doing so is much more expensive than re-using an existing thread from the threadpool. More on that in a moment.) If the value you are waiting for comes from the filesystem or a database or the network, then there is no need for a thread to sit around and wait for the data when it can be servicing other requests. Instead, the Task might register a callback to receive the value(s) when they're ready.

In particular, the Task does not say why it is that it takes such a long time to return the value. It might be that it takes a long time to compute, or it might that it takes a long time to fetch. Only in the former case would you use a Thread to run a Task. (In .NET, threads are freaking expensive, so you generally want to avoid them as much as possible and really only use them if you want to run multiple heavy computations on multiple CPUs. For example, in Windows, a thread weighs 12&#8201;KiByte (I think), in Linux, a thread weighs as little as 4&#8201;KiByte, in Erlang/BEAM even just 400&#8201;Byte. In .NET, it's 1&#8201;MiByte!)
...
Рейтинг: 0 / 0
Замена для backgroundWorker.
    #39127396
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВjenya7,
В .NET асинхронные вычисления можно запустить следующими способами.
1. класс Thread
2. delegate.BeginInvoke - этот функционал использует BackgroundWorker
3. Task, начиная с C# 5.0 - await/async
4. при помощи реактивных расширений
5. Parallel class, но там тоже внутри таски
6. Как экзотика или на крайний случай, через Win API.
Вроде все, дополните если упустил чего.Так же полезно классифицировать по способу выполнения:

1. Thread
2. Thread Pool
3. I/O Completion Port
4. UI Thread
...
Рейтинг: 0 / 0
Замена для backgroundWorker.
    #39127459
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7ЕвгенийВjenya7,
В .NET асинхронные вычисления можно запустить следующими способами.
1. класс Thread
2. delegate.BeginInvoke - этот функционал использует BackgroundWorker
3. Task, начиная с C# 5.0 - await/async
4. при помощи реактивных расширений
5. Parallel class, но там тоже внутри таски
6. Как экзотика или на крайний случай, через Win API.
Вроде все, дополните если упустил чего.

я думаю Thread и Task наше все. а какая разница между ними?Task - это абстракция, описывающая асинхронную операцию. Thread - это, кроме всего прочего, один из способов запуска асинхронной операции.
...
Рейтинг: 0 / 0
Замена для backgroundWorker.
    #39127597
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВjenya7,
В .NET асинхронные вычисления можно запустить следующими способами.
1. класс Thread
2. delegate.BeginInvoke - этот функционал использует BackgroundWorker
3. Task, начиная с C# 5.0 - await/async
4. при помощи реактивных расширений
5. Parallel class, но там тоже внутри таски
6. Как экзотика или на крайний случай, через Win API.
Вроде все, дополните если упустил чего.
Ах да, совсем забыл про ThreadPool.
...
Рейтинг: 0 / 0
Замена для backgroundWorker.
    #39127603
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КTask - это абстракция, описывающая асинхронную операцию.
Скорее управляющая асинхронной операцией, реализующая запуск, отмену, продолжение, ожидание.
Алексей КThread - это, кроме всего прочего, один из способов запуска асинхронной операции.
Это некая субстанция описывающая тред в .NET.
...
Рейтинг: 0 / 0
Замена для backgroundWorker.
    #39127973
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВАлексей КTask - это абстракция, описывающая асинхронную операцию.
Скорее управляющая асинхронной операцией, реализующая запуск, отмену, продолжение, ожидание.описывающая == структура данных + поведение.
ЕвгенийВАлексей КThread - это, кроме всего прочего, один из способов запуска асинхронной операции.
Это некая субстанция описывающая тред в .NET."Кроме всего прочего" (ц) выше

Здесь интересно описание Thread применительно к Task.
...
Рейтинг: 0 / 0
Замена для backgroundWorker.
    #39127974
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиjenya7, если не в контексте с UI, действительно, зачем они нужны?Оптимизация - уменьшение количества потоков, ожидающих I/O.
...
Рейтинг: 0 / 0
Замена для backgroundWorker.
    #39128019
AlexUser987
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7До сих пор все было хорошо. Создавал несколько backgroundWorker и работал с ними. Вобщем то был доволен. Но тут мне объяснили что это зло. А чем заменить? Thread? Task?
Я понимаю, конечно, что всё и раньше прекрасно работало. Но ради общего развития и подготовки к будущему рекомендовал бы изучить Task и async/await - BackgroundWorker после этого покажется каким-то узкоспециализированным костылём. Даже если вы не перестанете использовать BackgroundWorker, вы хотя бы будете знать, как вообще в современном дотнете делают многопоточные вещи. В ближайшем будущем без тасков и асинков никуда, а BackgroundWorker сам забудется, как нишевый костыль, который использовали, пока лучше ничего не было.
...
Рейтинг: 0 / 0
Замена для backgroundWorker.
    #39128020
AlexUser987
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexUser987В ближайшем будущем без тасков и асинков никуда
Причём, это не только в дотнете - в джаве и джаваскрипте тоже аналоги делают или сделали. Т. е. это очень широкий тренд. Скоро без знания асинков и тасков на работу брать не будут, да и на текущих будут требовать, скорее всего. А скорее всего, уже не берут и требуют.
...
Рейтинг: 0 / 0
Замена для backgroundWorker.
    #39128022
AlexUser987
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7,

Создайте новый проект на WCF или ASP.NET MVC - там асинки по умолчанию в шаблонном проекте. Если вас не напрягает, что вы не понимаете, что это такое и как работает, то всё в порядке. Но я ещё раз вам говорю, что если раньше вам хватало только BackgroundWorker, "чтобы интерфейс не тормозил", то сейчас многопоточность становится (уже стала) таким же базовым навыком, как ООП.
...
Рейтинг: 0 / 0
Замена для backgroundWorker.
    #39128035
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexUser987AlexUser987В ближайшем будущем без тасков и асинков никуда
Причём, это не только в дотнете - в джаве и джаваскрипте тоже аналоги делают или сделали. Т. е. это очень широкий тренд. Скоро без знания асинков и тасков на работу брать не будут, да и на текущих будут требовать, скорее всего. А скорее всего, уже не берут и требуют.
Да, да, да. Вот наберём в следующем году человек 30 без требования знания асинков и тасков, а дальше все, прикроем лавочку.

Ну что за глупости :) Заного зарегистрировался на сайте, чтобы флудить о чем попало?
...
Рейтинг: 0 / 0
Замена для backgroundWorker.
    #39128038
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexUser987Если вас не напрягает, что вы не понимаете, что это такое и как работает, то всё в порядке.

Погодите, а без какого рода знаний async/await уже не берут на работу?
...
Рейтинг: 0 / 0
Замена для backgroundWorker.
    #39128342
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlexUser987jenya7,

Создайте новый проект на WCF или ASP.NET MVC - там асинки по умолчанию в шаблонном проекте. Если вас не напрягает, что вы не понимаете, что это такое и как работает, то всё в порядке. Но я ещё раз вам говорю, что если раньше вам хватало только BackgroundWorker, "чтобы интерфейс не тормозил", то сейчас многопоточность становится (уже стала) таким же базовым навыком, как ООП.

я много чего не понимаю как это работает. однако успешно этим пользуюсь. :)
...
Рейтинг: 0 / 0
25 сообщений из 42, страница 1 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Замена для backgroundWorker.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]