![]() |
Теория.Создание формы.Потоки (C#)
Здравствуйте, Уважаемые!Помогите, пожалуйста, разобраться в теории и практике! Суть работы такова : Запускается программа, сворачивается, висит в трее!При запуске запускается несколько потоков, один из которых проверяет появление новых файлов(размеры могут колебаться от 1кб до нескольких гб).Количество файлов тоже неизвестно!Для наглядности копирования файлов, есть форма с отображением хода выполнения копирования.
Конструктор : Код:
CopyFilesWithProgress frm = new CopyFilesWithProgress(List<string[]> list) В потоке формируется этот лист!И если Код:
list.Count > 0 Была мысль передать через поля класса главного окна лист, но как вызвать из него событие запуска копирования? помогите разобраться, натолкните на мысль! Заранее Всех благодарю! |
эм... я чето слабо понял что ты там накрутил но смотри. Поток это тоже самое что ты запускаешь паралельно вторую программу, которая просто тесно связаны. Когда же ты создаешь форму это создает ..эм.. скажем еще один поток специально под форму и она живет "своей" жизнью.
другое дело я немогу понять нах тебе потоки если у тебя будет 2-а окна которые итак работают параллельно. И вообще я не вижу в твоих словах распараллеливание процесса для чего и придуманы потоки. Как ты себе представляешь копирование списка, который заполняется "налету". А если в списке чтото появилось - почему нельзя копировать сразу по чьейнить команде ибо ты всеравно это делаешь в другой форме которая тока грузит процесс, но никак не встревает в циклы основной формы |
Цитата:
Потоки же создаются все из одно "главной" формы!А уже в них может понадобится вызов форм! Цитата:
Файлы копируются после создания списка! |
LilLoco, приведи ка скриншот своей программы и окон, может, понятней станет, что к чему. Я по описанию тоже ничего не понял :)
|
Вложений: 2
Так, в данный момент почти все в теории, скринов особо то не нужно!
На данный момент есть : Главная форма(main), на форме есть только listBox для "логирования" ошибок и всякого другого(для слежения за работой). При запуске приложения форма сворачивается в трей и запускаются другие потоки, в одном из которых появляется список файлов для копирования. (рис1) Планируется сделать что то типа вот этого : (рис2) То есть в окне будет выполнятся какая то работа.Поэтому поиск файлов и копирование вынесено в отдельный поток(th1)(поток засыпает на некоторое время, и если это делать в "потоке" главной формы, она тоже "засыпает", что недопустимо). В потоке th1 идет поиск, заполняет List<string[]>.Далее нужно выполнить копирование файлов!Некоторые файлы, которые будут копироваться, могут использоваться в форме main, на мой взгляд, нужно на время копирования сделать неактивными эти вкладки! Но с другими вкладками можно продолжать работать!На время копирования нужно сделать что то визуально - отображающее процесс!Вот и надумал сделать форму с прогрессбарами. Но не надумал как вызвать форму из потока th1. P.S. Простите за "непонятные" объяснения. Не знаю как проще ( Можно ли вообще из другого потока, запустить форму так, что если засыпает поток, форма(запущенная из потока) продолжает "нормальную" работу? |
Время: 06:49. |
Время: 06:49.
© OSzone.net 2001-