0

sudzc コードを使用して Web サービス メソッドを呼び出していますが、受信した応答で呼び出されるコールバック ハンドラがあります。

私の問題は、サービスを呼び出すメソッドがあるユーティリティ クラスがあることです。このメソッドは、View Controller クラスとセレクターからバックグラウンドで呼び出されます。

ユーティリティ メソッドには、サービス コール ロジックが記述されている for ループがあります。コールバック メソッドが呼び出されて結果が受信されるまで、次のレコードをフェッチするのを待ちたいと思います。しばらくやりましたが、Web サービスを呼び出した後に設定したフラグのステータスを確認し、コールバック メソッドでフラグを false に設定して次の行を取得することはできません。

以下のコードでView Controllerからこれを呼び出します。

FTPHelper *ftphelper= [[FTPHelper alloc]init];
[ftphelper performSelectorInBackground:@selector(FtpFilesAsyn) withObject:nil];

ユーティリティ クラスでは、独立した静的スレッドを作成します。

if(myThread ==nil)
{
   myThread=[[NSThread alloc] initWithTarget:self selector:@selector(SendFtpFile) object:nil];
}
[myThread start];

セレクターのメソッド呼び出しで:

for (Employee *emp in empList) 
 {
   do {   
                    if(isSendingFl==YES)
                    {

//webserivce call here,

WebService *service=[WebService service];

[service SendFile:self action:@selector(FtpFileHandler:) imagefileStream:outputData filename: ftpFileName];
isSendingFl=YES;
}

   } while (isSendingFl);

}

- (void) FtpFileHandler: (id) value {

 NSString* result = (NSString*)value;
    isSendingFl=NO;
    NSLog(@"FtpFile returned the value: %@", result);

}
4

0 に答える 0