Информация об изменениях

Сообщение Re[2]: Потокобезопаность SHGetFileInfo от 14.07.2019 14:26

Изменено 14.07.2019 14:27 Barbar1an

Re[2]: Потокобезопаность SHGetFileInfo
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Здравствуйте, Barbar1an, Вы писали:



B>>SHGetFileInfo работает с какимто своим внутренним ImageList'ом, а он вообще потокобезопасный?


PD>Утверждают, что нет, правда, без пруфа


PD>The other point to make is that SHGetFileInfo is not threadsafe. If you have multiple threads that call SHGetFileInfo then you will need to serialize those calls to SHGetFileInfo.


PD>https://stackoverflow.com/questions/22102858/shgetfileinfo-returns-default-icon-from-background-thread-but-correct-icon-from


пасиба но там нет ссылки на официальный док поэтому до всё равно хз безопасная она или нет

кста проблема ВРОДЕ решилась вот с помощью такого порно:

    
for(int i=0; i<100; i++)
{
    SHGetFileInfo(path.c_str(), 0, &j->Sfi, sizeof(j->Sfi), SHGFI_SYSICONINDEX);
    if(j->Sfi.iIcon >= 0)
    {
        break;;
    }
    else
        Sleep(1);
}
Re[2]: Потокобезопаность SHGetFileInfo
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Здравствуйте, Barbar1an, Вы писали:



B>>SHGetFileInfo работает с какимто своим внутренним ImageList'ом, а он вообще потокобезопасный?


PD>Утверждают, что нет, правда, без пруфа


PD>The other point to make is that SHGetFileInfo is not threadsafe. If you have multiple threads that call SHGetFileInfo then you will need to serialize those calls to SHGetFileInfo.


PD>https://stackoverflow.com/questions/22102858/shgetfileinfo-returns-default-icon-from-background-thread-but-correct-icon-from


пасиба но там нет ссылки на официальный док поэтому всё равно хз безопасная она или нет

кста проблема ВРОДЕ решилась вот с помощью такого порно:

    
for(int i=0; i<100; i++)
{
    SHGetFileInfo(path.c_str(), 0, &j->Sfi, sizeof(j->Sfi), SHGFI_SYSICONINDEX);
    if(j->Sfi.iIcon >= 0)
    {
        break;;
    }
    else
        Sleep(1);
}