Здравствуйте, 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});
}