![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
RastaDja |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 1.11.2010 Репутация: нет Всего: 5 |
Доброго времени суток!
Собственно:
Хотелось бы к m_Table.WriteXml("C:\\Ptach.xml"); привязать ProgressBar. ![]() Если кто знает подскажите. Заранее благодарен за ответы. -------------------- The more closely you look at one thing, the less closely can you see something else. |
|||
|
||||
Gluttton |
|
|||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: 2 Всего: 54 |
RastaDja, рекомендую ознакомиться с BackgroundWorker'ом - в свое время сталкивался с подобной задачей и мне помогло.
-------------------- Слава Україні! |
|||
|
||||
-Mikle- |
|
|||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 17 Всего: 59 |
BackgroundWorker положит это сохранение в отдельный поток, но вы по-прежнему не сможете контролировать процесс хаписи в файл (хоть и будет возможность оповещать о нем). Предлагаю другое решение: создайте класс наследник от StreamWriter. Объявите событие и свойство типа Stream. В методе Write контролируйте сколько данных записалось, дергаете событие, ну и записывайте их в нижележащий поток. Вроде должно сработать.
-------------------- Если тебе плюют в спину, значит ты впереди... |
|||
|
||||
RastaDja |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 1.11.2010 Репутация: нет Всего: 5 |
Gluttton, а можеш свой код показать, там где с DataTable именно?
-------------------- The more closely you look at one thing, the less closely can you see something else. |
|||
|
||||
RastaDja |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 1.11.2010 Репутация: нет Всего: 5 |
Помогите по возможности, я в с# только начал работать и не разобрался есчё, как из m_Table.WriteXml("C:\\Ptach.xml") возможно получить проценты от записи на диск я совсем не представляю. Объясните, ведь тема актуальна не только для меня.
![]() -------------------- The more closely you look at one thing, the less closely can you see something else. |
|||
|
||||
Gluttton |
|
||||||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: 2 Всего: 54 |
К сожалению в моей случае я "прикручивал" ProgressBar к запросу к БД. Проценты выполнения были проставлены, мягко говоря... на абум (сформировал строку подключения - 10%, подготовил запрос с параметрами - 20%, ... , запрос к БД - Х%). Естественно ProgressBar двигался с нелинейной скоростью. В моем случае это была не проблема. Для того, что бы адекватно отображать части выполнения задачи необходимо знать эту задачу в целом (кстати именно по этой причине в моем случае с запросом к БД я и не мог достигнуть адекватной оценки - ведь длительность выполнения запроса сервером и объем выбранных данных передаваемых по сети с неизвестной скоростью в общем случае не известны). В данном случае мне в голову приходят мысли вроде следующего: 1. Преобразуем xml в массив бит (это нам позволит узнать 100% предполагаемой "работы"). 2. Массив бит передаем в файловый поток частями в цикле (это позволит нам узнавать актуальный % фактически выполненной "работы"). 3. На каждой итерации проверяем переданный объем и в случае достижения очередного этапа сообщаем об этом ProgressBar'у. Точнее скажут специалисты. Я в C# не силен... Добавлено через 7 минут и 41 секунду
Хм... Или я вообще не о том? -------------------- Слава Україні! |
||||||
|
|||||||
gambit |
|
|||
![]() Эксперт ![]() ![]() ![]() Награды: 1 Профиль Группа: Комодератор Сообщений: 1359 Регистрация: 25.6.2006 Где: я? Репутация: 5 Всего: 40 |
Мне почему то кажется, это не на столько длительный процесс, что бы прикручивать к нему прогрессБар и получить столько геморроя и ###кода. Максимум вынесете в отдельный поток, и приделайте прогрессбар лоадер без процентов, ну в котором полоска тупо бегает(там это каким то свойством выставляется).
|
|||
|
||||
RastaDja |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 1.11.2010 Репутация: нет Всего: 5 |
вы действительно правы, но при 100 000 записей немного подвисает прога, + для пользователя удобно если ему сообщают что идет работа.
Это такой отдельный компонент? или в прогресс баре выставляется какое-то свойство? Добавлено через 4 минуты и 36 секунд
Уже нашел ![]() -------------------- The more closely you look at one thing, the less closely can you see something else. |
||||
|
|||||
Gluttton |
|
|||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: 2 Всего: 54 |
Поставить StatusBar с текстом "Идет сохранение" и анимацию *.avi в виде пишущего карандашика или мигающей дискетки... -------------------- Слава Україні! |
|||
|
||||
-Mikle- |
|
|||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 17 Всего: 59 |
тут я бы рекомендовал вам уже на базу данных перейти, а не датасет сохранять. -------------------- Если тебе плюют в спину, значит ты впереди... |
|||
|
||||
RastaDja |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 1.11.2010 Репутация: нет Всего: 5 |
я вот написал как то так:
но ничего не произошло(ProgressBar не появился)
В реальности столько записей скорее всего не будет, это я для себя пробовал -------------------- The more closely you look at one thing, the less closely can you see something else. |
||||||
|
|||||||
RastaDja |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 1.11.2010 Репутация: нет Всего: 5 |
Настряпал такое
1. Установил свойство на панели проперти toolStripProgressBar1.Style = margue; toolStripProgressBar1.Visible = false; toolStripStatusLabel1.Text = ""; 2. Создаю поток
3. Обрабатываю поток
4. ждем завершения потока
Вот так. Спассибо -Mikle-, Gluttton, gambit, за то что не бросили и помогли!!! -------------------- The more closely you look at one thing, the less closely can you see something else. |
||||||
|
|||||||
Gluttton |
|
||||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: 2 Всего: 54 |
RastaDja, сам молодец, что разобрался, а не сказал, что то типа: "... а набросайте мне пожалуйста решение, кому не сложно".
P.S.
Я слышал, что правильнее писать вот так:
-------------------- Слава Україні! |
||||
|
|||||
RastaDja |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 1.11.2010 Репутация: нет Всего: 5 |
ОК исправлю -------------------- The more closely you look at one thing, the less closely can you see something else. |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |