0

非同期 ASPX ページから n 回の非同期 Web サービス呼び出しを行う必要があります。

各 WS 呼び出しは、バイナリ ファイルの一部を取得します。次に、コードはファイル ブロックをページの応答ストリームに出力します。

offset = 0;
blocksize = 1024;
output = getFileBlock(path, offset, blocksize);

//BinaryWrite output to Response

offset += blocksize;
output = getFileBlock(path, offset, blocksize);

//BinaryWrite output to Response

//etc...

各 getFileBlock は、非同期にしたい Web サービス呼び出しです。ただし、これらの呼び出しを特定の順序で行う必要があります。

これを実装する方法について何か提案はありますか?

4

1 に答える 1

0

非同期関数を呼び出します。非同期完了ハンドラーで結果を出力し、さらにデータが必要な場合は、非同期関数を再度呼び出します。

public class Answer
{
  int _offset = 0;
  const int blocksize = 1024;
  string _path;

  static int main()
  {
    Init();
    getFileBlock(_path, _offset, _blocksize);
  }
  void function Init()
  {
    _path = "c:\foo.dat";
    CompletionEvent +=  HandleCompletion;
    getFileBlock(_path, _offset, _blocksize);
  }

  void function HandleCompletion( object sender, CompletionEventArgs e )
  {
    OutputResult( e.Result );
    _offset += blocksize;
    if ( _offset < limit )
    {
      getFileBlock(_path, _offset, _blocksize);
    }
  } 
}
于 2009-10-08T02:00:13.330 に答える