0

J'ai besoin d'effectuer un nombre n d'appels de service Web asynchrones à partir d'une page ASPX asynchrone. Chaque appel WS récupère une partie d'un fichier binaire. Le code génère ensuite le bloc de fichier dans le flux de réponse de la page.Plusieurs appels de service Web asynchrone séquentiels à partir d'une page ASP.NET asynchrone?

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... 

Chaque getFileBlock est un appel de service Web que je voudrais faire asynchrone. Cependant, j'ai besoin que ces appels se produisent dans un ordre spécifique.

Des suggestions pour implémenter cela?

Répondre

0

Appelez la fonction asynchrone. Dans le gestionnaire d'achèvement asynchrone, affichez le résultat et, si vous avez besoin de plus de données, appelez à nouveau la fonction asynchrone.

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 - J'appelle cela à partir d'une page asynchrone ASP.NET. Donc il n'y a pas de main(). Je me demande comment cela se ferait dans ASP.NET. – frankadelic

+0

J'ai ajouté le main() juste pour être complet, afin d'indiquer que, étant donné le code, appelez Init(), puis appelez la fonction async getFileBlock(). Vous pouvez appeler ce code à partir d'une page ASP.Net. –

Questions connexes