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

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

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

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

ну вот потому что Roman Mejtes сказал - устаревшая технология.
...
Рейтинг: 0 / 0
13.12.2015, 14:19
    #39126683
jenya7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена для backgroundWorker.
я не знаю что "под капотом" у 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
13.12.2015, 14:23
    #39126684
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена для backgroundWorker.
Почитай Дж. Рихтер CLR via C# . Часть V. Многопоточность.
Там все возможные варианты расписаны с плюсами и минусами. Выбери что больше подходит.
...
Рейтинг: 0 / 0
13.12.2015, 14:28
    #39126685
jenya7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена для backgroundWorker.
Dima TПочитай Дж. Рихтер CLR via C# . Часть V. Многопоточность.
Там все возможные варианты расписаны с плюсами и минусами. Выбери что больше подходит.
спасибо. у меня эта книжка где то есть. поищу.
...
Рейтинг: 0 / 0
13.12.2015, 14:32
    #39126687
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена для backgroundWorker.
jenya7, если не в контексте с UI, действительно, зачем они нужны?
...
Рейтинг: 0 / 0
13.12.2015, 14:37
    #39126689
jenya7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена для backgroundWorker.
Где-то в степиjenya7, если не в контексте с UI, действительно, зачем они нужны?
в основном конечно что бы UI не зависал.
...
Рейтинг: 0 / 0
14.12.2015, 11:11
    #39127073
blest
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена для backgroundWorker.
jenya7,

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

По существу после выхода в C# 5.0 await/async пользуюсь только им, backgroundworker для меня отошел в историю
...
Рейтинг: 0 / 0
14.12.2015, 12:15
    #39127147
ЕвгенийВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена для backgroundWorker.
jenya7,
В .NET асинхронные вычисления можно запустить следующими способами.
1. класс Thread
2. delegate.BeginInvoke - этот функционал использует BackgroundWorker
3. Task, начиная с C# 5.0 - await/async
4. при помощи реактивных расширений
5. Parallel class, но там тоже внутри таски
6. Как экзотика или на крайний случай, через Win API.
Вроде все, дополните если упустил чего.
...
Рейтинг: 0 / 0
14.12.2015, 12:22
    #39127151
jenya7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена для backgroundWorker.
ЕвгенийВ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
14.12.2015, 12:27
    #39127154
jenya7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена для backgroundWorker.
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
14.12.2015, 15:04
    #39127396
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена для backgroundWorker.
ЕвгенийВ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
14.12.2015, 15:43
    #39127459
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена для backgroundWorker.
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
14.12.2015, 17:29
    #39127597
ЕвгенийВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена для backgroundWorker.
ЕвгенийВ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
14.12.2015, 17:32
    #39127603
ЕвгенийВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена для backgroundWorker.
Алексей КTask - это абстракция, описывающая асинхронную операцию.
Скорее управляющая асинхронной операцией, реализующая запуск, отмену, продолжение, ожидание.
Алексей КThread - это, кроме всего прочего, один из способов запуска асинхронной операции.
Это некая субстанция описывающая тред в .NET.
...
Рейтинг: 0 / 0
15.12.2015, 05:01
    #39127973
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена для backgroundWorker.
ЕвгенийВАлексей КTask - это абстракция, описывающая асинхронную операцию.
Скорее управляющая асинхронной операцией, реализующая запуск, отмену, продолжение, ожидание.описывающая == структура данных + поведение.
ЕвгенийВАлексей КThread - это, кроме всего прочего, один из способов запуска асинхронной операции.
Это некая субстанция описывающая тред в .NET."Кроме всего прочего" (ц) выше

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

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

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

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

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

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


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