Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 | 2 |

 

  Вопрос: Вопрос по многопоточности Добавлено: 05.05.07 13:06  

Автор вопроса:  s12
В общем дело такое:
Требуется вынести форму в отдельный поток, при этом контролы формируются из главной формы, по возможности реализовать надо без MDI?
Ваши предложения господа!

Ответить

  Ответы Всего ответов: 17  

Номер ответа: 1
Автор ответа:
 Alexandr.R



Вопросов: 9
Ответов: 115
 Web-сайт: gvin.net
 Профиль | | #1
Добавлено: 05.05.07 16:53
Требуется вынести форму в отдельный поток, при этом контролы формируются из главной формы

А по подробнее

Ответить

Номер ответа: 2
Автор ответа:
 s12



Вопросов: 24
Ответов: 363
 Профиль | | #2 Добавлено: 05.05.07 17:32
Попробую конкретизировать сие деяние...
Имеется проект с несколькими формами активно использующий базу данных, фишка в том что количество записей в базе приближается к 10000
и очень часто возникает потребность одновременно выполнять поиск и редактировать найденное, при этом не блокируя базу для других пользователей (ADO.NET Forever :-), на мощных машинах все прекрасно работает, но самое заподлянское то, что приложение надо адаптировать на камушки 800 Мгц и менее.
Единственный способ ИМХО чтобы не блокировать интерфейс и поиметь относительно хорошее юзабилити вытащить форму поиска в отдельный поток.
Дело, мякго говоря, непростое. :)
И на сладкое: Каждая из записей обладает своим набором параметров (`30 почти всегда разный) и для редактирования требуется свой контрол, поэтому приходится вклинивать нужный контрол из главной формы.

ФУУУ подробней по моему некуда :)

Ответить

Номер ответа: 3
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #3
Добавлено: 05.05.07 17:57
Обычно все-таки сам поиск выносят в другой поток, а интерфейс оставляют в одном.

Ответить

Номер ответа: 4
Автор ответа:
 s12



Вопросов: 24
Ответов: 363
 Профиль | | #4 Добавлено: 05.05.07 18:04
Sharp:
А как же тогда работать с контролами???
Насколько я знаю работать из одного потока с контролами другого не очень то просто, если вообще возможно?

Ответить

Номер ответа: 5
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #5
Добавлено: 05.05.07 18:20
Что сложного? Заводишь некий класс для межпотокового взаимодействия, например, и оборачиваешь изменение его состояния так, чтобы это было атомарной операцией.

Ответить

Номер ответа: 6
Автор ответа:
 s12



Вопросов: 24
Ответов: 363
 Профиль | | #6 Добавлено: 05.05.07 18:36
Не совсем понял. Какой-такой класс.
А на счет состояния: атомарными операциями в моем случае лучше не пользоваться, прога будет подвисать, камень то слабый.

Ответить

Номер ответа: 7
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #7 Добавлено: 05.05.07 19:37
Насколько я знаю работать из одного потока с контролами другого не очень то просто, если вообще возможно?

Ничего сложного нету - просто все операции проводишь через Invoke.

Ответить

Номер ответа: 8
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #8
Добавлено: 05.05.07 22:28
Не вижу связи между использованием атомарных операций и тормозами на слабом камне. Синхронизация потоков - не .NET FW, все ресурсы не съест.

Ответить

Номер ответа: 9
Автор ответа:
 Lanback



ICQ: 271-209-305 

Вопросов: 23
Ответов: 48
 Профиль | | #9 Добавлено: 06.05.07 00:07
Выносишь сложную функцию в отдельный поток. Создаешь функцию-делагат, с помощью которой сможешь получать инфу с формы или изменять контролы. Потом из отдельного потока вызываешь так: control_name.Invoke(delegate_name). Функция delegate_name выполнится в том же потоке, в котором был создан контрол!

Ответить

Номер ответа: 10
Автор ответа:
 s12



Вопросов: 24
Ответов: 363
 Профиль | | #10 Добавлено: 06.05.07 12:02
To Sharp:
Синхронизация потоков вообще тема отдельная, ну да и хр...н с ними, с ресурсами. Сначала написать надо, оптимизация потом.
FAT (For attention of a thank.)

To Lanback:
Спасибо, я этого не знал. Обязательно попробую.

Ответить

Номер ответа: 11
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #11
Добавлено: 06.05.07 19:11
Так или иначе FW должен будет и при invoke делегата атомизировать обращения к глобальным ресурсам, причем вряд ли он сделает это грамотнее, чем программист.

Ответить

Номер ответа: 12
Автор ответа:
 blinow



Вопросов: 0
Ответов: 5
 Профиль | | #12 Добавлено: 19.05.07 17:56
А что разве на таком камешке NET будет прилично работать, я не заикаюсь даже про Celeronы, все равно какие тактовые, лучше не связваться, только Пни 4, а вы тут про 800 толкуете, причем тут БД просто голая форма хрен дождешся когда загрузится

Ответить

Номер ответа: 13
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #13 Добавлено: 19.05.07 18:07
Так или иначе FW должен будет и при invoke делегата атомизировать обращения к глобальным ресурсам, причем вряд ли он сделает это грамотнее, чем программист.

спорное утверждение

Ответить

Номер ответа: 14
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #14 Добавлено: 19.05.07 18:08
А что разве на таком камешке NET будет прилично работать, я не заикаюсь даже про Celeronы, все равно какие тактовые, лучше не связваться, только Пни 4, а вы тут про 800 толкуете, причем тут БД просто голая форма хрен дождешся когда загрузится

Да сейчас уже давно все себе ставит "Кор 2"!

Ответить

Номер ответа: 15
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #15
Добавлено: 19.05.07 23:01
спорное утверждение

Если бы это было не так, любой инвок ставил бы под угрозу многопоточную стабильность программы.

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам