Асинхронное чтение данных из файла

Тема в разделе "Delphi - Система", создана пользователем slavon-x86, 18 авг 2008.

  1. slavon-x86

    slavon-x86 Well-Known Member

    Регистрация:
    18 дек 2005
    Сообщения:
    216
    Симпатии:
    0
    Пишу HTTP сервер и столкнулся со следующей проблемой:
    Получается что к примеру User1 загружает файл 1.rar и пока он не загрузит этот файл, то User2 не сможет его загрузить.

    Код (Text):
    AssignFile(f);
    ....
    CloseFile(f);

    Сразу в голову приходят 2 способа:
    1. Загрузить файлы полностью в оперативу, однако если будут многообьёмные файлы, то оперативы не хватит
    2. Читать по кускам, однако этот способ мне неособо нравиться

    Код (Text):
    Repeat
    AssignFile(f);
    ....
    читаем кусок файла
    ....
    CloseFile(f);
    .....
    отправляем считанный кусок
    Until
    Или может есть ещё какие-нибудь способы ?
     
  2. slavon-x86

    slavon-x86 Well-Known Member

    Регистрация:
    18 дек 2005
    Сообщения:
    216
    Симпатии:
    0
    Код (Text):
    f := TFileStream.Create(Request.Line.Path, fmOpenRead);
    Так не работает...
    Когда он грузиться с одного потока, то второму он не доступен.
     
  3. slavon-x86

    slavon-x86 Well-Known Member

    Регистрация:
    18 дек 2005
    Сообщения:
    216
    Симпатии:
    0
    Ура нашёл ! fmShareDenyNone - параметр, не блокирующий доступ к файлу.
    Код (Text):
     f := TFileStream.Create('Load' + Request.Line.Path,
    fmOpenRead + fmShareDenyNone);
     
Загрузка...
Похожие Темы - Асинхронное чтение данных
  1. seoman2
    Ответов:
    21
    Просмотров:
    770
  2. admigator
    Ответов:
    10
    Просмотров:
    815
  3. AlexPNZ
    Ответов:
    3
    Просмотров:
    1.602
  4. AlexPNZ
    Ответов:
    0
    Просмотров:
    1.252
  5. eugira
    Ответов:
    1
    Просмотров:
    1.119

Поделиться этой страницей