Как синхронизовать передачу строк из патоков в listview?

Тема в разделе "WASM.WIN32", создана пользователем Flasher, 28 янв 2008.

  1. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    Есть много патоков которые чуть-ни ли одновременно передают строки в один listview, и соотвественно когда ITEMCOUNT сбивается - SubItem'ы перестает показывать.
    Я думал если свести начала получения номера строки и обявления ее занятым до минимума избавлюсь от этой проблемы, но увы.., не получилось.

    Код (Text):
    1.                    mov lvi.imask,LVIF_TEXT or LVIF_IMAGE or LVIF_PARAM
    2.                    mov lvi.iSubItem,0
    3.                    mov eax,info1
    4.                    mov lvi.pszText,eax
    5.                    mov eax,Icon
    6.                    mov lvi.iImage,eax
    7.                    invoke SendMessage,hList,LVM_GETITEMCOUNT,0,0
    8.                    mov lvi.iItem,eax
    9.                    mov lvi.lParam,eax
    10.                    invoke SendMessage,hList,LVM_INSERTITEM,0,addr lvi
    11.                    mov lvi.imask,LVIF_TEXT
    12.                    inc lvi.iSubItem
    13.                    mov eax,info2
    14.                    mov lvi.pszText,eax
    15.                    invoke SendMessage,hList,LVM_SETITEM,0,addr lvi
    Не направите в нужную сторону?
    Спасибо.
     
  2. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.347
    помести вышеприведенный код в критическую секцию, например.
     
  3. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    здесьмуссируется подобное приложение
     
  4. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    стопт удерживать блокировку на весь список во время работы с ним.
     
  5. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    Примного благодарен господа!
    InitializeCriticalSection\EnterCriticalSection\LeaveCriticalSection\DeleteCriticalSection - то что нужно.
     
  6. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Flasher
    Проще посылать сообщения с данными главному окну, а оттуда уже заполнять список.
     
  7. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    IceStudent, если честно, уже с Critical'ом замутил, и нет особого желания вникать в другие методы..., а ещё есть, может быть, не обоснованное предположение что из за наводнений строками окну - окно замерзнет :)