Re[2]: Обнавления ListView по Event'у с удалённой машины
От: MaxB  
Дата: 15.05.03 14:18
Оценка: 5 (1)
Здравствуйте, mihailik, Вы писали:

LH> У меня есть клиент с ListView и сервер, клиент подписан на event на сервере, когда сервер инициирует event с данными для ListView, клиент пытается добавить их в ListView и в этот ммомент на list.items.add(item) у меня всё подвисает


M>Это из-за многопоточности. Почитай описание метода Control.Invoke, он помогает.


Пример использования Invoke.

ListView1- экземпляр ListView.
JobInfo- структура, содержащая номер задания- rn, наименование задания- name. Заполняется на сервере.

Ниже приведен код на клиенте.

//Делегат для метода ListView.Items.Add
delegade ListViewItem dListViewItemsAdd(ListViewItem lvItem)

void AddListItem(JobInfo ji)
{
//Создать экземпляр делегата для метода ListView1.Items.Add
dListViewItemsAdd lvadd = new dListViewItemsAdd(listView1.Items.Add);

//Поместить данные JobInfo в ListViewItem
ListViewItem lvItem = new ListViewItem(new string[]{ji.rn.ToString(),ji.name.ToString()});

//Добавить ListViewItem к окну списка
ListView1.Invoke(lvAdd, new object[]{lvItem});
}
Обнавления ListView по Event'у с удалённой машины
От: LastHope Россия  
Дата: 15.05.03 07:43
Оценка:
У меня есть клиент с ListView и сервер, клиент подписан на event на сервере, когда сервер инициирует event с данными для ListView, клиент пытается добавить их в ListView и в этот ммомент на list.items.add(item) у меня всё подвисает
(при этом просто пространство диалога становится чисто белым)
Я попытался сделать ListView статическим, это не помогло.
При этом таже самая поцедура вызаваемая по кнопке в этом диалоге таких проблем не вызывает, всё прекрасно добавляется.
Может кто-нибуть сталкивался с данной проблемой? Помогите...
Я думаю может надо всю приходящую информацию в буфер складывать, а потом по таймеру забирать оттуда но мне кажется это не выход, должно же быть более простое решение.

23.12.03 12:58: Перенесено модератором из '.NET' — AVK
Re: Обнавления ListView по Event'у с удалённой машины
От: mihailik Украина  
Дата: 15.05.03 11:53
Оценка:
LH> У меня есть клиент с ListView и сервер, клиент подписан на event на сервере, когда сервер инициирует event с данными для ListView, клиент пытается добавить их в ListView и в этот ммомент на list.items.add(item) у меня всё подвисает

Это из-за многопоточности. Почитай описание метода Control.Invoke, он помогает.
... << RSDN@Home 1.0 beta 6a >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.