|
ProgressBar на выполнение процедуры отправки почты
|
|||
---|---|---|---|
#18+
Есть процедура отправки почты: Код: plaintext 1. 2. 3.
Письмо отправляется 30-40 сек. Как можно подключить ProgressBar на это действие? Думаю что тут нужно как-то прикрутить Process... Кто сталкивался, помогите пожалуйста! ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2007, 03:20 |
|
ProgressBar на выполнение процедуры отправки почты
|
|||
---|---|---|---|
#18+
У меня отправляется 4 секунды иногда быстрей. Но я всё равно не делал прогресс. Я просто сделал это чудо в потоке, и до тех пор пока не отправилось или не получим результат отправки по эксепшину, кнопка выход из формы не активна. Сама форма в проекте как не модальная. Тогда и форма не тормозит, тоесть свойство paint хорошо у неё работает и пользователя не напрягает. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2007, 11:23 |
|
ProgressBar на выполнение процедуры отправки почты
|
|||
---|---|---|---|
#18+
МишааааааааааааааааУ меня отправляется 4 секунды иногда быстрей. Но я всё равно не делал прогресс. Я просто сделал это чудо в потоке, и до тех пор пока не отправилось или не получим результат отправки по эксепшину, кнопка выход из формы не активна. Сама форма в проекте как не модальная. Тогда и форма не тормозит, тоесть свойство paint хорошо у неё работает и пользователя не напрягает. А можеш привести пример как ты это запихнул в поток? Буду благодарен :) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2007, 11:55 |
|
ProgressBar на выполнение процедуры отправки почты
|
|||
---|---|---|---|
#18+
Super_pА можеш привести пример как ты это запихнул в поток? Буду благодарен :) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2007, 12:58 |
|
ProgressBar на выполнение процедуры отправки почты
|
|||
---|---|---|---|
#18+
Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2007, 23:50 |
|
ProgressBar на выполнение процедуры отправки почты
|
|||
---|---|---|---|
#18+
опачки! Недопустимая операция в нескольких потоках: попытка доступа к элементу управления 'toolStrip1' не из того потока, в котором он был создан. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2007, 01:14 |
|
ProgressBar на выполнение процедуры отправки почты
|
|||
---|---|---|---|
#18+
ибо нефиг обращаться к визуальным элементам не из того потока, в котором означенный элемент был создан. аминь. Миша-а-а наверное в 2003 студии ваяет, раз него такое проканало ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2007, 10:25 |
|
ProgressBar на выполнение процедуры отправки почты
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2007, 10:31 |
|
ProgressBar на выполнение процедуры отправки почты
|
|||
---|---|---|---|
#18+
Спасибо! Только вместо Код: plaintext
Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2007, 12:45 |
|
ProgressBar на выполнение процедуры отправки почты
|
|||
---|---|---|---|
#18+
В продолжение индейки Alexes 'a для само развития: How to: Make Thread-Safe Calls to Windows Forms Controls Super_P ты её можешь сделать так ;^): CheckForIllegalCrossThreadCalls Property Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2007, 12:56 |
|
ProgressBar на выполнение процедуры отправки почты
|
|||
---|---|---|---|
#18+
Мишаааааааааааааааа System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false; Ага, удобная штука. Можно использовать многопоточность и в то же время обращаться к элементам формы. Правда возникает вопрос. Была же какая то веская причина, чтобы запретить по умолчанию такую возможность. Интересно какая. ЗЫ. С личного опыта. На двухпроцессорных машинах приложение с установленным таким образом свойством имеет дурную привычку время от времени вылетать. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2007, 02:30 |
|
ProgressBar на выполнение процедуры отправки почты
|
|||
---|---|---|---|
#18+
интересно, сам Мишаа читал ссылку на МСДН, которую он дал? читаем и думаем. When a thread other than the creating thread of a control tries to access one of that control's methods or properties, it often leads to unpredictable results. A common invalid thread activity is a call on the wrong thread that accesses the control's Handle property. Set CheckForIllegalCrossThreadCalls to true to find and diagnose this thread activity more easily ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2007, 10:36 |
|
ProgressBar на выполнение процедуры отправки почты
|
|||
---|---|---|---|
#18+
Читал я всё! :) Для такой задачи в этом нет ничего плохого. Кнопку отрубить. хехе Не нравиться делайте так как считаете нужным. Это просто один из вариантов. Без уверений что нужно делать так и только так! :) автор Была же какая то веская причина, чтобы запретить по умолчанию такую возможность. Интересно какая. Можно сказать и наоборот: "Была же какая то веская причина, чтобы разрешить использовать такую возможность. Интересно какая?" Так что прошу не придираться. (Без обид) Те кому нужно разберутся, почитают и решат что им нужно для своей конкретной задачи. А то так можно было и к майкрософт придраться, мол, "что это вы гоните так, такой брет оставили. Нужно было во втором фреймвёрке запретить эту возможность." ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2007, 12:12 |
|
ProgressBar на выполнение процедуры отправки почты
|
|||
---|---|---|---|
#18+
уважаемый Мишааа!!! тоже прощу без обид. но обращение к свойствам/методам контролов из другого потока чревато самыми неожиданными багами, которые в дальнейшем ОЧЕНЬ трудно выловить. у вас в отладке может все прокатить раз 500, но на 501 уже у пользователя ваша программа неожиданно начнет работать как-то не так, и поверьте, причину этого найти будет практически невозможно. Так что не нужно советовать людям заведомо плохие решения. 2 Super_p - воспользуйтесь советом Alexes во избежание больших проблем в будущем. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2007, 12:23 |
|
ProgressBar на выполнение процедуры отправки почты
|
|||
---|---|---|---|
#18+
у вас в отладке может все прокатить раз 500, но на 501 уже у пользователя ваша программа неожиданно начнет работать как-то не так, и поверьте, причину этого найти будет практически невозможно. Спасибо за информацию. Объективно, я с вами соглашусь, так как у меня нет большого опыта работы с потоками и время что бы тестить всё что предлагает мелкасофт. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2007, 12:42 |
|
ProgressBar на выполнение процедуры отправки почты
|
|||
---|---|---|---|
#18+
GinasПравда возникает вопрос. Была же какая то веская причина, чтобы запретить по умолчанию такую возможность Up Тоже появилась потребность обращаться к элементам, созданным в другом потоке. Ранее использовал Invoke, а сейчас решил испытать Код: c# 1.
Пока полет нормальный. Но про вескую причину может кто-то что-то сказать? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2012, 18:49 |
|
ProgressBar на выполнение процедуры отправки почты
|
|||
---|---|---|---|
#18+
Cat2, а вы что, релиз под дебагом будете распространять? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2012, 19:21 |
|
ProgressBar на выполнение процедуры отправки почты
|
|||
---|---|---|---|
#18+
Где-то в степиCat2, а вы что, релиз под дебагом будете распространять? Пробное развертывание проблем не принесло. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2012, 20:41 |
|
ProgressBar на выполнение процедуры отправки почты
|
|||
---|---|---|---|
#18+
Cat2, Оно и может не принести, ошибка конкурентного доступа может и два три года никак себя не проявлять, это ж мина замедленного действия, может и пять лет сидеть тихо, это ж для отладки, зачем они эту штуковину придумали, ума не приложу. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2012, 20:48 |
|
ProgressBar на выполнение процедуры отправки почты
|
|||
---|---|---|---|
#18+
есть же BackgroundWorker, специально для взаимодействия потока с формой ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2012, 20:49 |
|
ProgressBar на выполнение процедуры отправки почты
|
|||
---|---|---|---|
#18+
Яростный Мечесть же BackgroundWorker, специально для взаимодействия потока с формой Сам-то его пробовал? Я попробовал - обыный эксепшен вылетел - "Вы пытаетесь обновить созданное в другом потоке" ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2012, 20:57 |
|
ProgressBar на выполнение процедуры отправки почты
|
|||
---|---|---|---|
#18+
просто скрыли ошибку обращения не из билдер потока. Представьте что основной поток работает с контролом, планировщик переключат работу на другой поток, основной не законченное барахло грузит в стек, другой поток работает с котролом, поработал, планировщик возобновляет работу основного потока, он продолжает работать с контролом якобы со старым, хотя он уже не старый последствия не предсказуемы. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2012, 20:59 |
|
ProgressBar на выполнение процедуры отправки почты
|
|||
---|---|---|---|
#18+
Решил провести эксперимент. Таймер запускает поток, который перерисовывает текст на кнопке Во время дебага вылетает эта ошибка. В откомпилированом релизе - работает. Прилагаются исходники. Что у меня не так? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2012, 21:17 |
|
ProgressBar на выполнение процедуры отправки почты
|
|||
---|---|---|---|
#18+
Cat2Яростный Мечесть же BackgroundWorker, специально для взаимодействия потока с формой Сам-то его пробовал? Я попробовал - обыный эксепшен вылетел - "Вы пытаетесь обновить созданное в другом потоке"использовал, всё норм. только к элементам формы надо обращаться в обработчиках ProgressChanged или RunWorkerCompleted ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2012, 21:18 |
|
|
start [/forum/topic.php?fid=20&msg=34483122&tid=1405601]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
61ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 171ms |
0 / 0 |