Несколько последовательных вызовов асинхронной веб-службы с асинхронной страницы ASP.NET? - PullRequest
0 голосов
/ 08 октября 2009

Мне нужно сделать n вызовов асинхронных веб-сервисов со страницы асинхронного ASPX.

Каждый вызов 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 - это вызов веб-службы, который я хотел бы сделать асинхронным. Однако мне нужно, чтобы эти вызовы происходили в определенном порядке.

Есть предложения, как это реализовать?

1 Ответ

0 голосов
/ 08 октября 2009

Вызовите асинхронную функцию. В обработчике асинхронного завершения выведите результат, и если вам все еще нужно больше данных, снова вызовите асинхронную функцию.

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);
    }
  } 
}
...