Quelqu'un peut-il aider à transformer/fournir un squelette de la façon de transformer le code ci-dessous pour les deux fonctions en cours d'exécution simultanément, à la fois avec leurs propres minuteries distinctes.C# Minuterie 2 Actions Parallèlement
public void Controller()
{
List<int> totRand = new List<int>();
do
{
Thread.Sleep(new TimeSpan(0,0,0,1));
totRand.Add(ActionA());
} while (true);
do
{
Thread.Sleep(new TimeSpan(0,0,0,30));
ActionB(totRand);
totRand = new List<int>();
} while (true);
}
public int ActionA()
{
Random r = new Random();
return r.Next();
}
public void ActionB(List<int> totRand)
{
int total = 0;
//total = add up all int's in totRand
Console.WriteLine(total/totRand.Count());
}
Il est évident que ce qui précède ne marcherait jamais, mais le principal est qu'une méthode circule toutes les 1 seconde ajoute des données à une liste.
Une autre action s'exécute également sur une minuterie et prend tout ce qui peut être dans cette liste et fait quelque chose avec elle, puis efface la liste. (ne pas s'inquiéter du contenu de la liste changeant pendant que je fais ceci). J'ai lu attentivement des tutoriels et des exemples, mais je ne peux tout simplement pas comprendre comment je m'y prendrais. Des idées/astuces?
La bibliothèque .NET contient 3 ou 4 classes Timer. Lequel utilisez-vous? –
Vous savez que créer plusieurs instances de 'Random' en utilisant le constructeur par défaut en succession rapide est cassé? Créez une instance par thread et réutilisez-la. – CodesInChaos
@CodeInChaos - était juste un petit exemple, ne sera pas réellement faire cela, mais merci:) – ct5845