Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2002.04.22;
Скачать: [xml.tar.bz2];

Вниз

как определить- закончена перекачка файла или нет?   Найти похожие ветки 

 
Юрий Зотов   (2002-03-12 22:50) [25]

Перевел, а заодно убрал лишнее. Вот код для желающих:

Монитор:

program Project1;
{$APPTYPE CONSOLE}

uses
Windows;

var
dwChangeHandle: THandle;

begin
dwChangeHandle := FindFirstChangeNotification("D:\Temp", False, FILE_NOTIFY_CHANGE_SIZE);
if dwChangeHandle <> INVALID_HANDLE_VALUE then
try
while WaitForSingleObject(dwChangeHandle, INFINITE) = WAIT_OBJECT_0 do
begin
WriteLn("Notification!");
FindNextChangeNotification(dwChangeHandle)
end
finally
FindCloseChangeNotification(dwChangeHandle)
end
end.


Пишущая программа:

procedure TForm1.FormCreate(Sender: TObject);
begin
WinExec("..\SMonitor\Project1.exe", SW_SHOWNORMAL)
end;

procedure TForm1.Button1Click(Sender: TObject);
var
H: THandle;
begin
H := CreateFile("D:\Temp\TestFile.tst", GENERIC_WRITE, 0, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL or FILE_FLAG_RANDOM_ACCESS, 0);
try
SetFilePointer(H, 1048576, nil, FILE_BEGIN);
SetEndOfFile(H)
finally
CloseHandle(H)
end
end;

Запустил под W2K. Действительно, все работает так, как Вы сказали. Но есть одно маленькое "но".

После выпонения SetEndOfFile файл на диске УЖЕ реально существует и его размер равен заказанному - а это значит, что система УЖЕ сбросила его на диск.

О чем я и говорил - уведомление приходит В МОМЕНТ РЕАЛЬНОЙ ЗАПИСИ ФАЙЛА. Не записи в файл, а записи САМОГО файла.

То же самое сказано и в хелпе. Расшифровка простая:
"For operating systems that use extensive caching, detection occurs only when the cache is sufficiently flushed".

Просто после выполнения SetEndOfFile система решила, что пора сбрасывать кэш - вот уведомление и возникло.

В прежних моих программах эта ситуация возникала в момент закрытия файла. Хотя, конечно, очевидно, что система может сбросить кэш не только при закрытии - что мы и видели.



Страницы: 1 2 вся ветка

Форум: "Потрепаться";
Текущий архив: 2002.04.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.009 c
3-69737
alexandervasjuk
2002-03-14 12:30
2002.04.22
Отображение JPEGа, хранящегося в базе


1-69825
Pafnuty
2002-04-10 12:28
2002.04.22
.res файл проекта


14-69968
B@Nt
2002-03-11 11:45
2002.04.22
Где мона слить книгу по Базам?


1-69769
kay
2002-04-09 22:15
2002.04.22
asm вставки


7-70050
AntBofh
2002-01-23 22:09
2002.04.22
COM порт ... и мой ... Модем





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский