C# Thread D'Arrière-Plan

Permettez-moi de décrire ce que je suis en train de réaliser. Je suis à la programmation en C#.

J'ai une fonction (méthode) DoCalculations(). Je tiens à appeler cette DoCalculations() la méthode récursive. Toutefois, en C# je obtenir exception exception non gérée du Système.StackOverflow.
Donc, je suis en train de lancer DoCalculations() la méthode sur le fil.

Sur l'événement LOAD du FORMULAIRE. J'ai fait suivant:-

Thread objThread = new Thread(new ThreadStart(DoCalculations));

Sur le BOUTON DÉMARRER CLIQUEZ sur l'événement. Je suis en train de créer le Thread comme suit.

 objThread.IsBackground = true;
    objThread.Start();
    while (!objThread.IsAlive)
    {
    }

Et j'ai l'intention d'exécuter la méthode DoCalculations() en permanence au-dessus de la Boucle While.

DoCalculations()
{
//some calculations.

}

Je ne reçois pas le contrôle dans DoCalculations() la méthode la fois. Cependant, je tiens à le faire à chaque instant.

S'il vous plaît si quelqu'un peut m'aider en ce qui concerne sol en arrière, filetage, ou est-il une meilleure façon de parvenir à faire le calcul en parallèle.

J'ai utilisé l'approche ci-dessus dans VB.NET me faisant plus confus pourquoi sa ne fonctionne pas dans C#.NET

Toute l'assistance, les commentaires sont grandement appréciées.

Merci
AP

  • Qu'entendez-vous par - I do get control in DoCalculations() method one time ?
  • Pourquoi n'essayez-vous pas de fixation à l'exception de dépassement de pile?
  • "Je veux appeler cette DoCalculations() la méthode récursive." - Ne DoCalculations appeler lui-même? Êtes-vous sûr que la résiliation condition est-elle correcte?
  • Vous avez mal compris ce que ".IsBackground" signifie. Si .IsBackground est vrai pour un fil, puis lorsque le thread du processus parent est résiliée, le thread sera également résilié. Si .IsBackground est faux pour un fil, puis lorsque le thread du processus parent est terminée, le processus sera gardé en vie jusqu'à ce que le thread se termine. C'est la seule différence.
  • Basé sur le code que vous avez fourni la boucle While n'aura jamais de fin. Donc, si vous faites quelque chose qui prend de la mémoire, vous avez une boucle qui ne se termine jamais, dans un sujet séparé.
InformationsquelleAutor Ankur | 2012-06-22