0

我需要从异步ASPX页面进行n次异步Web服务调用。来自异步ASP.NET页面的多个顺序异步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服务调用,我想做异步。不过,我需要这些电话按特定顺序发生。

任何建议如何实现?

回答

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); 
    } 
    } 
} 
+0

Phillip - 我从ASP.NET异步页面调用这个。所以没有main()。我想知道这将如何在ASP.NET内完成。 – frankadelic 2009-10-08 03:51:05

+0

为了完整起见,我添加了main(),作为指示给定代码的方式,调用Init(),然后调用异步函数getFileBlock()。您可以从ASP.Net页面调用该代码。 – 2009-10-08 05:15:36