![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
Keanor |
|
||||||||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 2.6.2009 Репутация: нет Всего: нет |
Здравствуйте. Моё приложение выполняет несколько запросов по http, и чтобы приложение не зависало решил выполнять запросы в отдельном потоке. Максимум что у меня получилось - я вижу промежуточные результаты. Это стало возможно благодаря добавлению
после отработки потока. Главная задача не решена, окно как зависало так и зависает. Пробовал играть с
в основном и в дополнительном потоке, различий не увидел (цифры от 100 до 1000). Попробовал:
Но результата также не дало. Возможно ли выполнять запросы по http в отдельном потоке но чтобы при этом работали контролы основной формы? На текущий момент клик по ним вызывает зависание приложения (button2 в прилагаемом коде). (Заметил что первый клик по button2 игнорируется, приложение зависает при втором клике.)
Заранее спасибо. |
||||||||
|
|||||||||
Gluttton |
|
|||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: 2 Всего: 54 |
Особо не вникал, но возможно BackgroundWorker поможет.
-------------------- Слава Україні! |
|||
|
||||
Keanor |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 2.6.2009 Репутация: нет Всего: нет |
Да, именно это и нужно. Но возникла иная проблема, нужно передать из bw_do() переменную в bw_complete(). e.Result уже занят результатом работы bw_do().
Объявление глобальной переменной не поможет, BackgroundWorker вызывается несколько раз. От того какой контрол его вызвал зависит то что делать в RunWorkerCompleted. Для этого мне надо в RunWorkerCompleted затащить свою переменную, в идеале локальную для объекта BackgroundWorker которая создается и уничтожается вместе с ним. Это сообщение отредактировал(а) Keanor - 14.6.2011, 13:36 |
|||
|
||||
Keanor |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 2.6.2009 Репутация: нет Всего: нет |
Проблему решил самостоятельно, отказавшись от RunWorkerCompleted и выполнив весь код в DoWork
|
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |