从异步ASP.NET页面调用多个顺序异步Web服务?

时间:2009-10-08 00:42:17

标签: asp.net asynchronous content-disposition asynchronous-pages

我需要从异步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服务调用,我想使其异步。但是,我需要按特定顺序进行这些调用。

有任何建议如何实现吗?

1 个答案:

答案 0 :(得分: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);
    }
  } 
}