Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

Фоновое выполнение действия

-

Вопросы и ответы, обсуждения

- Ваши вопросы по C# только в данном разделе

Ответ
 
Опции темы
Старый 05.10.2012, 15:02   #1
 Разведчик
Аватар для sith999
 
sith999 на правильном пути
Регистрация: 07.09.2010
Сообщений: 44
Популярность: 92
Сказал(а) спасибо: 15
Поблагодарили 23 раз(а) в 6 сообщениях
 
Question Фоновое выполнение действия

Мне нужна помощь.Вопрос:
Как сделать фоновое выполнение операции в программе,но при этом программа должна быть активна,а не зависать..Желательно с прогресс баром.BackgroundWorker сразу говорю не то т.к. в нём можно выполнять тока операции не затрагивающие интерфейс(к примеру richtextBox)?
  Ответить с цитированием
Старый 05.10.2012, 15:35   #2
 Старший сержант
Аватар для Sinyss
 
Sinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака Норриса
Регистрация: 29.07.2011
Сообщений: 197
Популярность: 8989
Сказал(а) спасибо: 45
Поблагодарили 175 раз(а) в 139 сообщениях
Отправить сообщение для Sinyss с помощью Skype™
 
По умолчанию Re: Фоновое выполнение действия

Цитата:
Сообщение от sith999Посмотреть сообщение
Как сделать фоновое выполнение операции в программе,но при этом программа должна быть активна,а не зависать..Желательно с прогресс баром.BackgroundWorker сразу говорю не то т.к. в нём можно выполнять тока операции не затрагивающие интерфейс(к примеру richtextBox)?

В нем как раз можно выполнять операции затрагивающие интерфейс....
  Ответить с цитированием
Старый 05.10.2012, 22:16   #3
Читер-спонсор
 Рыцарь-защитник
Аватар для Nickitee
 
Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(
Регистрация: 28.08.2009
Сообщений: 603
Популярность: 19129
Золото Zhyk.Ru: 500
Сказал(а) спасибо: 84
Поблагодарили 602 раз(а) в 321 сообщениях
 
По умолчанию Re: Фоновое выполнение действия

Цитата:
Сообщение от sith999Посмотреть сообщение
Мне нужна помощь.Вопрос:
Как сделать фоновое выполнение операции в программе,но при этом программа должна быть активна,а не зависать..Желательно с прогресс баром.BackgroundWorker сразу говорю не то т.к. в нём можно выполнять тока операции не затрагивающие интерфейс(к примеру richtextBox)?

Код:
CheckForIllegalCrossThreadCalls = false;
и
Код:
new Thread(...).Start();
Тебе в помощь.
Насчёт прогресс бара не уверен, но если это чекер или парсер то можно высчитать 100% из общего количества и высчитать процент выполненного.
________________
We are Ducks. We are birds. We like bread. We cryack. Cryack.
  Ответить с цитированием
Старый 07.10.2012, 02:13   #4
 Сержант
Аватар для Yukikaze
 
Yukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядом
Регистрация: 01.10.2011
Сообщений: 128
Популярность: 5723
Сказал(а) спасибо: 25
Поблагодарили 174 раз(а) в 105 сообщениях
 
По умолчанию Re: Фоновое выполнение действия

Цитата:
Сообщение от NickiteeПосмотреть сообщение
CheckForIllegalCrossThreadCalls = false;

гори в аду!!!11

ЗЫ я искренне надеюсь, что ты так не делаешь и написал просто ради примера.
________________
Talk is cheap. Show me the code
— Linus Torvalds

Последний раз редактировалось Yukikaze; 07.10.2012 в 02:15.
  Ответить с цитированием
Старый 07.10.2012, 14:16   #5
 Старший сержант
Аватар для Sinyss
 
Sinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака Норриса
Регистрация: 29.07.2011
Сообщений: 197
Популярность: 8989
Сказал(а) спасибо: 45
Поблагодарили 175 раз(а) в 139 сообщениях
Отправить сообщение для Sinyss с помощью Skype™
 
По умолчанию Re: Фоновое выполнение действия

Цитата:
Сообщение от YukikazeПосмотреть сообщение
гори в аду!!!11

ЗЫ я искренне надеюсь, что ты так не делаешь и написал просто ради примера.

Пример как это можно использовать есть? =)
  Ответить с цитированием
Старый 07.10.2012, 15:41   #6
Читер-спонсор
 Рыцарь-защитник
Аватар для Nickitee
 
Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(
Регистрация: 28.08.2009
Сообщений: 603
Популярность: 19129
Золото Zhyk.Ru: 500
Сказал(а) спасибо: 84
Поблагодарили 602 раз(а) в 321 сообщениях
 
По умолчанию Re: Фоновое выполнение действия

Цитата:
Сообщение от YukikazeПосмотреть сообщение
гори в аду!!!11

ЗЫ я искренне надеюсь, что ты так не делаешь и написал просто ради примера.

Обоснуй, чем тебе это не понравилось.
________________
We are Ducks. We are birds. We like bread. We cryack. Cryack.
  Ответить с цитированием
Старый 07.10.2012, 15:55   #7
 Старший сержант
Аватар для Sinyss
 
Sinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака Норриса
Регистрация: 29.07.2011
Сообщений: 197
Популярность: 8989
Сказал(а) спасибо: 45
Поблагодарили 175 раз(а) в 139 сообщениях
Отправить сообщение для Sinyss с помощью Skype™
 
По умолчанию Re: Фоновое выполнение действия

Цитата:
Сообщение от NickiteeПосмотреть сообщение
Обоснуй, чем тебе это не понравилось.

Как минимум потому что эта функция для дебага...
  Ответить с цитированием
Старый 07.10.2012, 21:48   #8
Читер-спонсор
 Рыцарь-защитник
Аватар для Nickitee
 
Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(
Регистрация: 28.08.2009
Сообщений: 603
Популярность: 19129
Золото Zhyk.Ru: 500
Сказал(а) спасибо: 84
Поблагодарили 602 раз(а) в 321 сообщениях
 
По умолчанию Re: Фоновое выполнение действия

Цитата:
Сообщение от SinyssПосмотреть сообщение
Как минимум потому что эта функция для дебага...

Я не вижу ничего критичного ставить флаг false.
Если я не прав, напишите почему.
________________
We are Ducks. We are birds. We like bread. We cryack. Cryack.
  Ответить с цитированием
Старый 07.10.2012, 22:12   #9
 Старший сержант
Аватар для Sinyss
 
Sinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака Норриса
Регистрация: 29.07.2011
Сообщений: 197
Популярность: 8989
Сказал(а) спасибо: 45
Поблагодарили 175 раз(а) в 139 сообщениях
Отправить сообщение для Sinyss с помощью Skype™
 
По умолчанию Re: Фоновое выполнение действия

Цитата:
Сообщение от NickiteeПосмотреть сообщение
Я не вижу ничего критичного ставить флаг false.
Если я не прав, напишите почему.

"часто приводит к непредсказуемым результатам."
MSDN: [Ссылки могут видеть только зарегистрированные пользователи. ]
раздел Remarks
  Ответить с цитированием
Старый 07.10.2012, 22:24   #10
 Сержант
Аватар для Yukikaze
 
Yukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядом
Регистрация: 01.10.2011
Сообщений: 128
Популярность: 5723
Сказал(а) спасибо: 25
Поблагодарили 174 раз(а) в 105 сообщениях
 
По умолчанию Re: Фоновое выполнение действия

Ну начну с самого банального, это потоконебезопасно. Если отключить данное свойство то программа перестанет различать обращающиеся к форме потоки, следовательно фоновый поток может перебить результаты работы основного, и наоборот.
К примеру во время textbox.Text = "text", а именно между вызовом textbox.Text = "text" и самим методом set_Text может влезть "иной" поток и записать свое значение, тем самым мы просто потеряем значения "иного" потока после того как основной закончит свою работу.

Если включить данное свойство, то нам придется использовать делегаты, а следовательно программа сама будет выстраивать обращения потоков в очередь и обрабатывать их.
________________
Talk is cheap. Show me the code
— Linus Torvalds
  Ответить с цитированием
Старый 08.10.2012, 15:10   #11
 Разведчик
Аватар для sith999
 
sith999 на правильном пути
Регистрация: 07.09.2010
Сообщений: 44
Популярность: 92
Сказал(а) спасибо: 15
Поблагодарили 23 раз(а) в 6 сообщениях
 
По умолчанию Re: Фоновое выполнение действия

Вопрос остаётся открытым.Дай те пожалуйста ответ,желательно с примером.
  Ответить с цитированием
Старый 08.10.2012, 16:13   #12
 Старший сержант
Аватар для Sinyss
 
Sinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака Норриса
Регистрация: 29.07.2011
Сообщений: 197
Популярность: 8989
Сказал(а) спасибо: 45
Поблагодарили 175 раз(а) в 139 сообщениях
Отправить сообщение для Sinyss с помощью Skype™
 
По умолчанию Re: Фоновое выполнение действия

Цитата:
Сообщение от sith999Посмотреть сообщение
Вопрос остаётся открытым.Дай те пожалуйста ответ,желательно с примером.

Да как бы msdn имеет ответы на все вопросы...
[Ссылки могут видеть только зарегистрированные пользователи. ]
1й же пример, обрати внимание на : .ReportProgress();
  Ответить с цитированием
Старый 08.10.2012, 22:20   #13
Читер-спонсор
 Рыцарь-защитник
Аватар для Nickitee
 
Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(
Регистрация: 28.08.2009
Сообщений: 603
Популярность: 19129
Золото Zhyk.Ru: 500
Сказал(а) спасибо: 84
Поблагодарили 602 раз(а) в 321 сообщениях
 
По умолчанию Re: Фоновое выполнение действия

Цитата:
Сообщение от YukikazeПосмотреть сообщение
Ну начну с самого банального, это потоконебезопасно. Если отключить данное свойство то программа перестанет различать обращающиеся к форме потоки, следовательно фоновый поток может перебить результаты работы основного, и наоборот.
К примеру во время textbox.Text = "text", а именно между вызовом textbox.Text = "text" и самим методом set_Text может влезть "иной" поток и записать свое значение, тем самым мы просто потеряем значения "иного" потока после того как основной закончит свою работу.

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

Раньше тоже использовал делегаты, но сколько уже писалось кода с данным отключенным свойством, ничего не случалось.
С другой стороны, если есть функция, которая собирает данные с потоков а потом красивенько отображает в том же рич боксе, то данное отключенное свойство отрицательных результатов не вызовет.
________________
We are Ducks. We are birds. We like bread. We cryack. Cryack.
  Ответить с цитированием
Старый 08.10.2012, 22:40   #14
 Старший сержант
Аватар для Sinyss
 
Sinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака Норриса
Регистрация: 29.07.2011
Сообщений: 197
Популярность: 8989
Сказал(а) спасибо: 45
Поблагодарили 175 раз(а) в 139 сообщениях
Отправить сообщение для Sinyss с помощью Skype™
 
По умолчанию Re: Фоновое выполнение действия

Цитата:
Сообщение от NickiteeПосмотреть сообщение
С другой стороны, если есть функция, которая собирает данные с потоков а потом красивенько отображает в том же рич боксе, то данное отключенное свойство отрицательных результатов не вызовет.

Эта функция идеально подходит что бы повесить ее на .ReportProgress(); в бекграунд воркере.... и без ущерба в безопасности...
  Ответить с цитированием
Старый 09.10.2012, 01:03   #15
 Сержант
Аватар для Yukikaze
 
Yukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядом
Регистрация: 01.10.2011
Сообщений: 128
Популярность: 5723
Сказал(а) спасибо: 25
Поблагодарили 174 раз(а) в 105 сообщениях
 
По умолчанию Re: Фоновое выполнение действия

Не буду больше спорить о сферическом коне в вакууме, этот дискас напоминает разговор о том, нужно ли использовать lock/semaphore/monitor/waithandle.делегаты/etc. Ответ один - нужно, C# - объектно ориентированный язык программирования, здесь нужно соблюдать определенные правила
________________
Talk is cheap. Show me the code
— Linus Torvalds
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Фоновое меню [Pacman] Etty Прочий софт для Counter-Strike 4 26.07.2012 22:39
[Программа] выполнение срочняков maniakk Тюряга ВКонтакте 58 07.05.2012 13:55
[Помогите!] выполнение замутов Женёк777 Общение и обсуждение (Тюряга ВК) 6 20.06.2011 01:48

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 03:58.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net