Runloop не запускается, когда запланировано с потоками - PullRequest
1 голос
/ 17 июня 2011

В настоящее время я работаю с FTP-клиентом для моего проекта. Я запланировал readstream / writeStream с помощью runloop, чтобы прочитать файл с жесткого диска / записать файл на жесткий диск и отправить его на сервер. После загрузки и скачивания файла я не планирую поток из runloop. Это отлично работает в первый раз, когда я отправляю файл. Второй раз, когда я пытаюсь отправить файл. Потоки создаются и планируются с помощью цикла выполнения. Но цикл запуска не срабатывает. Я не знаю. Может кто-нибудь, пожалуйста, помогите мне

Ниже приведены коды, которые я использовал для планирования и отмены расписания

Для загрузки

readStream=CFReadStreamCreateWithFile(kCFAllocatorDefault, fileURL);
writeStream=CFWriteStreamCreateWithFTPURL(kCFAllocatorDefault,(CFURLRef ) ftpURL);
BOOL readStreamOpened=CFReadStreamOpen(readStream);
BOOL clientCallBackSet=CFWriteStreamSetClient(writeStream, kNetworkEvents, MyUploadCallBack, &callBackContext);

CFWriteStreamScheduleWithRunLoop(writeStream, CFRunLoopGetCurrent(), kCFRunLoopCommonModes);
CFReadStreamUnscheduleFromRunLoop(syncStructure->readStream, CFRunLoopGetCurrent(), kCFRunLoopCommonModes);

Загрузка:

readStream=CFReadStreamCreateWithFTPURL(kCFAllocatorDefault,(CFURLRef)ftpURL);
writeStream=CFWriteStreamCreateWithFile(kCFAllocatorDefault,fileURL);
Boolean writeStreamOpened=CFWriteStreamOpen(writeStream);
BOOL status= CFReadStreamSetClient(readStream, kNetworkEvents,MyDownloadCallBack,& callBackContext);
CFReadStreamScheduleWithRunLoop(readStream, CFRunLoopGetCurrent(), kCFRunLoopCommonModes);
CFWriteStreamUnscheduleFromRunLoop(syncStructure->writeStream, CFRunLoopGetCurrent(), kCFRunLoopCommonModes);

Может кто-нибудь, пожалуйста, помогите мне. Я ломаю голову 2 дня.

1 Ответ

0 голосов
/ 01 июля 2011

Через пару дней я решил проблему. Я проверил код, используя метод опроса, упомянутый в справочном руководстве. Когда я сделал это, я заметил, что проблема была с настройкой тайм-аута на моем сервере FTP После истечения времени ожидания сервера он не принял никакого соединения, поэтому мой runloop ожидал вызова функции обратного вызова

...