Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как периодически вызывать ф-цию? 
V
    Опции темы
CityAC
Дата 23.9.2007, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 3.11.2006
Где: Украина Горловка

Репутация: нет
Всего: 1



Клиенту нужно 1 раз в секунду  обновлять  таблицу данных из базы.
Первый раз таблицу я загружаю без проблем в конструкторе формы клиента.
пробовал через засыпание потока. 
Код

 public void ReloadLogBase()
        {
            while (true)
            {
                Thread.Sleep(1000);
                ds = new DataSet();
                localhost.Service1 dsReturn = new localhost.Service1();
                ds = dsReturn.SendLogToLogServer();
                dataGridView1.DataSource = ds.Tables["logstable"];
            }
        }

Не знаю правильно это или нет, потому что так и не нашел из какого обработчика вызвать эту функцию.
Нужно чтоб форма отобразилась полностью, загрузила в себя таблицу (в DataGridView) и затем начала обновляться
--------------------
Вижу цель, не вижу припятствий.  
PM MAIL ICQ   Вверх
GavriKos
Дата 23.9.2007, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 8.8.2007
Где: Донецк, Украина

Репутация: нет
Всего: 1



А обычный таймер не поможет?
--------------------
Донецкая группа IT - присоединяемся
PM MAIL ICQ   Вверх
Softaz
Дата 24.9.2007, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


wasm
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 16.1.2006

Репутация: нет
Всего: 16



Работа с БД происходит в одном треде с UI, поэтому в такой реализации из-за частого обращения к базе, интерфейс может подтормаживать. Эта раз.
Через таймер лучше. Эта два.
Потом надо бы убить ds. Что-то типа (но у тебя, как видно, другая архитектура)
Код

using(DataSet ds = new DataSet())
{
     //твой код
}


Распиши задачу. Может обычного биндинга хватит?

Это сообщение отредактировал(а) Softaz - 24.9.2007, 12:14


--------------------
Разочарованный в .NET
PM MAIL WWW   Вверх
CityAC
Дата 24.9.2007, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 3.11.2006
Где: Украина Горловка

Репутация: нет
Всего: 1



Расписываю задачу, т.к. интересно подробнее узнать что такое биндинг.
Клиент-Сервер. Клиент через сервер периодически обновляет из базы данных таблицу Логов(т.е. подключений, хотя не важно)
Я сделал через таймер. Меня устраивает. Шефа идея таймеров не устраивает. И мне , если не найду другого решения, прийдется архитектуру Клиент-Сервер, написанную на ASP.NET, реализовывать с помощью сокетов. 
Твое предложение может быть очень кстати.
--------------------
Вижу цель, не вижу припятствий.  
PM MAIL ICQ   Вверх
Alek86
Дата 24.9.2007, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 1
Всего: 25



странный шеф smile

1. если 1 раз в секунду, то точно таймер
2. можно вообще сделать кнопку "Refresh" у клиента и не париться
3. или при добавлении логов отсылать сообщения клиентам. если они захотят, то пусть обновляются.

реализация 3го способа зависит от того, как часто обовляются логи

если кто знает 4й, мне и самому интересно )


--------------------
user posted image    user posted image
PM MAIL   Вверх
archeg
Дата 24.9.2007, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 6.1.2007
Где: Киев

Репутация: 4
Всего: 27



Цитата(Alek86 @  24.9.2007,  20:58 Найти цитируемый пост)
можно вообще сделать кнопку "Refresh" у клиента и не париться

согласен. В таких случаях такое и делается в основном. Есть даж понятие такое (кажись "автономный клиент") когда клиент один раз обновивши данные может быть отсоединен от сети и будет ждать подсоединения для того чтобы заапдейтить или прочитать новую инфу с сервера. А раз в секунду - слишком быстро для обновления) Скорее всего такое часое обновление просто будет мешать юзеру.

Цитата(Alek86 @  24.9.2007,  20:58 Найти цитируемый пост)
или при добавлении логов отсылать сообщения клиентам. если они захотят, то пусть обновляются.

Тоже вариант но тогда уже нужен веб-сервис и регистрация клиентов на нем что не всегда резонно.



--------------------
ИМХО задница есть универсальный интерфейс. Ибо через задницу можно сделать абсолютно ВСЕ (bash.org.ru)

Дядька всегда можно спросить в аське, если не задалбывать - не откажет smile
И вообще, на самом деле я студент, и ненавижу обращение на "Вы") Тут все свои  ;)
PM MAIL ICQ Jabber   Вверх
tol05
Дата 24.9.2007, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 36
Всего: 170



Терпеть не могу работать с BackgroundWorker, но ИМХО тут ему самое место.


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
GavriKos
Дата 24.9.2007, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 8.8.2007
Где: Донецк, Украина

Репутация: нет
Всего: 1



Цитата

Скорее всего такое часое обновление просто будет мешать юзеру.


Еще как будет. Вот представьте, пользователь что-то ищет в списке, а его рефрешем регулярно кидает на начало smile Так что ИМХО сочетание кнопка рефреш+авторефреш с периодичностью минута (минимум!) самое оно.
--------------------
Донецкая группа IT - присоединяемся
PM MAIL ICQ   Вверх
CityAC
Дата 25.9.2007, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 3.11.2006
Где: Украина Горловка

Репутация: нет
Всего: 1



Цитата(archeg @  24.9.2007,  22:04 Найти цитируемый пост)
 Скорее всего такое часое обновление просто будет мешать юзеру.

Обновление таблицы ЛОГОВ не главная задача.
Основным является следующее.
постоянное обновление и нужно другому юзеру. 
Диспетчерская служба такси  Сервер регистрирует входящие звонки , определяет адрес звонящего по телефонной базе и моментально обновляет базу у клиента. Звонки поступают раз 5-10 секунд и пока человек на проводе, нужно отправить машину по этому адресу.
Вот и как такое сделать. Сейчас все сделано на таймерах(в старой программе) .Чем его таймеры не устраивают - не знаю.



--------------------
Вижу цель, не вижу припятствий.  
PM MAIL ICQ   Вверх
Alek86
Дата 25.9.2007, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 1
Всего: 25



Цитата(CityAC @  25.9.2007,  09:06 Найти цитируемый пост)
Звонки поступают раз 5-10 секунд


значит обновляй всех клиентов по событию "определение адреса нового клиента"

Цитата(CityAC @  25.9.2007,  09:06 Найти цитируемый пост)
Чем его таймеры не устраивают - не знаю.


может, обновление у клиентов происходит с "мельканием". и так каждую секунду  smile 
а вообще я бы просто шефа спросил, чем ему не нравится

Это сообщение отредактировал(а) Alek86 - 25.9.2007, 10:18


--------------------
user posted image    user posted image
PM MAIL   Вверх
CityAC
Дата 25.9.2007, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 3.11.2006
Где: Украина Горловка

Репутация: нет
Всего: 1



Чем дальше - тем больше каши в голове.
Цитата(Alek86 @  25.9.2007,  10:17 Найти цитируемый пост)
значит обновляй всех клиентов по событию "определение адреса нового клиента"


Как сервер будет что то говорить клиенту, если тот у него ничего не спрашивает. Это нужно на клиенте ставить прослушку сервера?

Может все таки юзать REMOTING?

Это сообщение отредактировал(а) CityAC - 25.9.2007, 12:19
--------------------
Вижу цель, не вижу припятствий.  
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1116 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.