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