Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - Теория.Создание формы.Потоки (C#)

Ответить
Настройки темы
.NET - Теория.Создание формы.Потоки (C#)

В Поисках Истины


Сообщения: 802
Благодарности: 135


Конфигурация

Профиль | Отправить PM | Цитировать


Здравствуйте, Уважаемые!Помогите, пожалуйста, разобраться в теории и практике! Суть работы такова : Запускается программа, сворачивается, висит в трее!При запуске запускается несколько потоков, один из которых проверяет появление новых файлов(размеры могут колебаться от 1кб до нескольких гб).Количество файлов тоже неизвестно!Для наглядности копирования файлов, есть форма с отображением хода выполнения копирования.
Конструктор :

Код: Выделить весь код
CopyFilesWithProgress frm = new CopyFilesWithProgress(List<string[]> list)
list передается с указаниями путей откуда и куда копировать!

В потоке формируется этот лист!И если
Код: Выделить весь код
list.Count > 0
нужно запустить копирование,т.е. нужно запустить форму и передать этот лист!При создании формы в потоке, как только она создастся поток продолжает свою работу, но нужно чтобы он ожидал, т.к. в потоке используется зацикливание, и по окончании одной итерации происходит "засыпание" потока, на определенное время, и в это время форма не блокируется!

Была мысль передать через поля класса главного окна лист, но как вызвать из него событие запуска копирования?
помогите разобраться, натолкните на мысль!
Заранее Всех благодарю!

Отправлено: 09:54, 01-03-2011

 

Старожил


Сообщения: 154
Благодарности: 39

Профиль | Отправить PM | Цитировать


эм... я чето слабо понял что ты там накрутил но смотри. Поток это тоже самое что ты запускаешь паралельно вторую программу, которая просто тесно связаны. Когда же ты создаешь форму это создает ..эм.. скажем еще один поток специально под форму и она живет "своей" жизнью.
другое дело я немогу понять нах тебе потоки если у тебя будет 2-а окна которые итак работают параллельно. И вообще я не вижу в твоих словах распараллеливание процесса для чего и придуманы потоки. Как ты себе представляешь копирование списка, который заполняется "налету". А если в списке чтото появилось - почему нельзя копировать сразу по чьейнить команде ибо ты всеравно это делаешь в другой форме которая тока грузит процесс, но никак не встревает в циклы основной формы
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:12, 01-03-2011 | #2



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


В Поисках Истины


Сообщения: 802
Благодарности: 135

Профиль | Отправить PM | Цитировать


Цитата Beyound:
другое дело я немогу понять нах тебе потоки если у тебя будет 2-а окна которые итак работают параллельно. »
2 окно должно создаваться из потока, если нужно скопировать какие то файлы!
Потоки же создаются все из одно "главной" формы!А уже в них может понадобится вызов форм!

Цитата Beyound:
Как ты себе представляешь копирование списка, который заполняется "налету" »
Не очень Вас понял, что вы имеете ввиду!
Файлы копируются после создания списка!

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}


Отправлено: 22:19, 01-03-2011 | #3


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


LilLoco, приведи ка скриншот своей программы и окон, может, понятней станет, что к чему. Я по описанию тоже ничего не понял

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 00:59, 02-03-2011 | #4


В Поисках Истины


Сообщения: 802
Благодарности: 135

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: jpg 1.jpg
(21.2 Kb, 14 просмотров)
Тип файла: jpg 2.jpg
(74.9 Kb, 14 просмотров)

Так, в данный момент почти все в теории, скринов особо то не нужно!
На данный момент есть : Главная форма(main), на форме есть только listBox для "логирования" ошибок и всякого другого(для слежения за работой).
При запуске приложения форма сворачивается в трей и запускаются другие потоки, в одном из которых появляется список файлов для копирования.
(рис1)

Планируется сделать что то типа вот этого :
(рис2)

То есть в окне будет выполнятся какая то работа.Поэтому поиск файлов и копирование вынесено в отдельный поток(th1)(поток засыпает на некоторое время, и если это делать в "потоке" главной формы, она тоже "засыпает", что недопустимо). В потоке th1 идет поиск, заполняет List<string[]>.Далее нужно выполнить копирование файлов!Некоторые файлы, которые будут копироваться, могут использоваться в форме main, на мой взгляд, нужно на время копирования сделать неактивными эти вкладки! Но с другими вкладками можно продолжать работать!На время копирования нужно сделать что то визуально - отображающее процесс!Вот и надумал сделать форму с прогрессбарами. Но не надумал как вызвать форму из потока th1.

P.S. Простите за "непонятные" объяснения. Не знаю как проще (

Можно ли вообще из другого потока, запустить форму так, что если засыпает поток, форма(запущенная из потока) продолжает "нормальную" работу?

Отправлено: 08:44, 02-03-2011 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - Теория.Создание формы.Потоки (C#)

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Win32 API - Создание "сквозной" формы средствами WinAPI garkin123 Программирование и базы данных 7 14-11-2009 23:41
C/C++ - C++Builder Потоки alextrs Программирование и базы данных 1 01-04-2008 11:14
Delphi - Delphi7, потоки mahsus Программирование и базы данных 1 19-10-2004 16:46
Создание формы в классе Guest Программирование и базы данных 1 01-03-2004 15:53
Потоки в VC++6.0 Guest Программирование и базы данных 1 20-02-2004 05:06




 
Переход