Je dois utiliser une API pour appeler un tiers et, idéalement, utiliser la réponse qu'elle renvoie. L'API dispose d'un délai d'attente intégré de 30 secondes et ne vous permet pas de le définir par programmation. J'en ai besoin pour expirer en 12 secondes. Voici l'appel que je fais:Comment puis-je imposer mon propre délai d'expiration?
réponse de chaîne = theAPI.FunctionA (a, b, c, d);
J'ai pensé que j'aurais besoin d'utiliser des appels asynchrones pour accomplir ceci et abandonner le thread à 12 secondes. Une autre question de stackoverflow semble se rapprocher de ce que je considère: Implement C# Generic Timeout
... Je me demande simplement si c'est la meilleure façon. Spécifiquement, je continue à voir des articles qui vous avertissent d'appeler EndInvoke n'importe quoi, et je me demande si Abort comme dans l'exemple référencé fermera toujours le thread de manière appropriée? Je vois qu'il y avait quelques commentaires avec beaucoup d'inquiétude concernant l'utilisation d'Abort.
Le deal est à 12 secondes, j'ai besoin de renflouer et de passer à autre chose.Je ne peux pas m'asseoir et attendre les 30 secondes entières. Si on me permettait de le laisser fonctionner pendant les 30 secondes, j'irais certainement de cette façon. – Chad
Je ne suggérais pas d'attendre 30 secondes. Notez le "ignorez le résultat (et continuez) si cela prend plus de 12 secondes" bit. Tout ce que je suggère, c'est que votre délai ne devrait pas tuer la demande. Laissez-le compléter naturellement, pendant que vous continuez avec d'autres choses. –
Ok, je pense que je te suis. Je ferais peut-être un appel asynchrone avec une fonction de rappel attendant que les choses se terminent. Pendant ce temps mon code passe, et si je n'ai pas encore de réponse après 12 secondes, je continue comme s'il y avait un timeout. Ma fonction de rappel ne fait rien si plus de 12 secondes. – Chad