Mettre en œuvre c# timeout

Est-il une mauvaise pratique de l'utilisation de tels boucle while?
Peut-être que c'est mieux d'utiliser le Chronomètre, ou peut-être que cette solution a des pièges à éviter?

    public void DoWork()
    {
        //do some preparation
        DateTime startTime = DateTime.Now;
        int rowsCount = 0;
        int finalCount = getFinalCount();
        do
        {
            Thread.Sleep(1000);
            rowsCount = getRowsCount(); //gets rows count from database, rows are added by external app.
        } while (rowsCount < finalCount && DateTime.Now - startTime < TimeSpan.FromMinutes(10));

    }

J'ai vu cet article Mettre En Œuvre C# Générique Délai D'Attente,
mais il est trop complexe à utiliser dans les scénarios simples - vous besoin de penser à propos de la synchronisation de threads, est-il convenable de faire avorter ou non, et ainsi de suite.

  • Que voulez-vous faire avec la Création d'un TimeOut exactement? Si vous dites à votre entière scenerio, peut-être que nous pouvons vous proposer différentes façon de les utiliser.
  • Connexes / dupliquer: stackoverflow.com/questions/3195030/thread-timeout-in-c
  • Juste besoin de s'arrêter de travailler après une certaine période de temps de commencer à travailler, si elle passe plus de 10 minutes, arrêter le travail. Le thread qui appelle la méthode peut être bloqué.
  • qu'est-ce que le travail? Avez-vous le contrôle de code? Vous rendez-vous compte que par le sommeil, vous ne travaillez pas? Vous souhaiterez peut-être fournir un meilleur exemple.
  • Fernandes: mise à jour de la question. getRowsCount obtenir les lignes de table de base de données. Le tableau est mis à jour par app externe, j'ai besoin d'attendre pour un nombre déterminé de lignes dans la base de données de laquelle je reçois avec getFinalCount méthode. Mais il y a peut être une situation que rien n'est mis à jour et à prévenir l'infini, tandis que la boucle je veux attendre un certain temps et puis arrêter le travail.
  • Beaucoup mieux maintenant 🙂 De là, il semble que votre solution est raisonnable. Je peux vous proposer une amélioration: comme vous l'avez dit, et Jim suggère ci-dessous, l'utilisation d'un Chronomètre. Selon la façon dont le tableau de remplissage tâche se comporte, vous pouvez également régler la quantité à dormir. Il peut être utile de vérifier plus ou moins souvent.
  • Fernandes: oui, ce code est par exemple, je suis en utilisant le réglage de couchage et les délais d'attente dans l'app.config.

InformationsquelleAutor Andriy Kizym | 2011-02-16