2009-01-02 3 views
1

À partir d'un service Web (WCF), je souhaite qu'un point de terminaison prenne 10 secondes pour se terminer.L'appel d'une méthode C# et le délai de retour de 10 secondes

Y a-t-il un moyen que je peux faire un thread.sleep(10); sur la méthode?

+0

System.Threading.Thread.Sleep (10000); –

+0

Veuillez clarifier votre question - pourquoi ne pourriez-vous pas simplement faire dormir votre méthode? –

+0

Je ne peux pas sembler trouver la méthode Thread, permettez-moi de qualifier complètement désolé! – Blankman

Répondre

10

Vous pouvez créer une méthode wrapper qui effectue le sommeil approprié.

Thread.Sleep(TimeSpan.FromSeconds(10)) 
+0

secondes, pas de minutes –

+0

@nesteruk, merci. J'ai mis à jour la réponse – JaredPar

+0

System.Threading.Thread.Sleep (10000) –

0

Si vous voulez dire sans modifier le code de l'autre (côté serveur) fin de l'appel WCF, (car si vous pouvez changer le code il y a alors la réponse est évidente),

alors pas ..

3

Commencer un nouveau fil qui dort pendant 10 secondes, puis revenir, de cette façon le temps que prend la methos pour exécuter n'alourdirons pas les 10 secondes

using System.Threading; 

public static WCF(object obj) 
    { 
     Thread newThread = 
      new Thread(new ThreadStart(Work)); 
     newThread.Start(); 

     //do method here 

     newThread.Join(); 
     return obj; 

    } 

    static void Work() 
    { 
     Thread.Sleep(10000); 
    } 
0

Si cela est juste pour le test , vous pourriez avoir le point de classe proxy à un proxy Web qui simule le délai d'expiration. En utilisant Fiddler vous script peut la demande/réponse à être retardée de 10 secondes et ensuite l'utilisation de la classe proxy Fiddler pour faire des demandes de service Web en définissant la propriété « Proxy »:

IWebProxy proxy = new WebProxy("http://localhost:8888", true); 
webService.Proxy = proxy;