|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
13.04.2010, 07:43 | #11 |
Пользователь
Регистрация: 10.04.2010
Сообщений: 31
|
теперь привожу свой код и спрашиваю почему он тормозит так будто не создаёт новый поток?
using System; using System.Threading; public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { string adress = ""; if (openFileDialog1.ShowDialog() == DialogResult.OK) { adress = openFileDialog1.FileName; progressBar1.Enabled = true; progressBar1.Style = ProgressBarStyle.Marquee; Work workerObject = new Work(); Thread workerThread = new Thread(workerObject.DoWork); workerThread.Start(adress); richTextBox1.Text = "Thread started"; while (!workerThread.IsAlive) Thread.Sleep(1); } } } public class Work { bool _shouldStop; public void DoWork(object adress) { //////всякие читающие команды которые занимают вагон времени } } } Образец для всего этого безобразия по вашему совету нашёл в инете. Последний раз редактировалось tigrend; 13.04.2010 в 07:44. Причина: скобочку потерял |
13.04.2010, 08:22 | #12 | |
Пользователь
Регистрация: 24.08.2007
Сообщений: 88
|
;
Цитата:
|
|
13.04.2010, 10:31 | #13 |
Пользователь
Регистрация: 10.04.2010
Сообщений: 31
|
Нет. Ничего больше кроме ожидания счастливого конца.
Многопоточность нужна только чтобы форма не висла на период чтения. И как же тогда сделать чтобы форма не висела, а была таскабельна за загривок и ждала ожидания вторичного потока? UPD ой. всем спасибо. будем ожидать конца не так явно. например по таймеру раз в полсекунды. Последний раз редактировалось tigrend; 13.04.2010 в 10:43. Причина: выполнено |
14.04.2010, 01:18 | #14 |
Форумчанин
Регистрация: 04.10.2009
Сообщений: 147
|
Чтобы кнопочка не зависала, или основной поток - выполняй метод через отдельный поток! Просто я не знаю сути задачи... Чтобы обезопасить повторые нажатия - используй локер или просто блокируй кнопку, пока не завершиться поток
Код:
Ув. Форумчане! Если мои советы были Вам полезны, не забывайте благодарить в виде повышение рейтинга!!!
http://vkontakte.ru/id6715558 Последний раз редактировалось Arnezami; 14.04.2010 в 01:39. |
14.04.2010, 21:04 | #15 |
Пользователь
Регистрация: 24.08.2007
Сообщений: 88
|
что значит "будем ожидать конца не так явно" идея многопоточности - сплавить длинные операции на задний план, не дожидаясь их окончания. Чтобы узнать не завершился ли поток - можно спросить IsAlive, например делать это при нажатии на кнопку (если я правильно понял цель ожидания - предотвратить вторичный запуск.)
|
19.04.2010, 08:08 | #16 |
Пользователь
Регистрация: 10.04.2010
Сообщений: 31
|
Цель ожидания прозаична. Нам кроме этого чтения, на самом деле, до его окончания ничего не нужно, и я бы делал это в основном потоке, да форма зависает.
Да, проверяю я именно IsAlive(), но вызов второго потока не даёт на деле ничего страшного. В итоге всё равно получается то что надо. Главное это считать. И чтобы пользователю не было скучно он может таскать форму за загривок. И можно какую нибудь стороннюю анимацию сделать. Или мини-игру. Не решил ещё. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Многопоточность | Neymexa | Помощь студентам | 3 | 13.04.2010 11:43 |
Многопоточность | JakSon | Общие вопросы Delphi | 10 | 27.12.2009 02:19 |
Многопоточность на билдере | Golovastik | Помощь студентам | 0 | 03.10.2009 21:59 |
Многопоточность. | newmister | Общие вопросы Delphi | 9 | 24.07.2009 12:54 |
Многопоточность | PUH | Помощь студентам | 3 | 06.06.2009 13:54 |