Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Передача в CreateThread функции с параметрами [D6]


EternalWonderer ©   (2002-08-15 12:01:00) 

Задача: отключить из программы сетевой диск. Вызываем
WNetCancelConnection2(pChar(LocalName),0,True);
Проблема: работает, но при этом программа зависает на 5-8 секунд.
Решение: попытаться вынести операцию в отдельный поток.
CreateThread(Nil,0,@WNetCancelConnection2,Nil,0,c);
Вопрос: как в этом случае передать WNetCancelConnection2 параметры?


EternalWonderer   (2002-08-15 13:10:00) [1]

Вот только передать pChar так и не удалось: передаётся пустая строка. Пришлось "извернуться":

Function ThreadedCancelConnection(LocalLetter: Pointer): DWord; stdcall;
Var s: String;
Begin
s := Char(LocalLetter) + ":";
WNetCancelConnection2(pChar(s),0,True);
End;
...
CreateThread(Nil,0,@ThreadedCancelConnection,Pointer(LocalName[1]),0,c);


EternalWonderer   (2002-08-15 12:41:00) [2]

Спасибо!


paul_shmakov   (2002-08-15 12:25:00) [3]


function MyThreadFunc(Param: Pointer): DWord; stdcall;
begin
WNetCancelConnection2(PChar(Pointer), 0, True);
end;

...
CreateThread(nil, 0, MyThreadFunc, Pointer(LocalName), ...);


Ученик   (2002-08-15 12:19:00) [4]

HANDLE CreateThread(

LPSECURITY_ATTRIBUTES lpThreadAttributes, // pointer to thread security attributes
DWORD dwStackSize, // initial thread stack size, in bytes
LPTHREAD_START_ROUTINE lpStartAddress, // pointer to thread function
LPVOID lpParameter, // argument for new thread
DWORD dwCreationFlags, // creation flags
LPDWORD lpThreadId // pointer to returned thread identifier
);


Наверх

Титульная страница Поиск, карта сайта Написать письмо