Exemple Simple de l'utilisation du Système. Les minuteries. Minuteur en C#
J'ai lu le site MSDN et tout, mais je ne trouve pas d'explication simple sur la façon d'élever un événement chronométré qui accepte les arguments qui peuvent être un string
ou double
. Les exemples fournis utilise ElapsedEventArgs
mais aucun ne montre une bonne façon de mettre en œuvre mes propres arguments pour les événements déclenchés.
Mon code (je n'ai pas testé donc peut-être mal):
private double Pressure_Effect(double p, int t){
time=(double) t;
v=(((p/(rho*y))-g)*time)/(1.0+(mu*time/(rho*y*x)));
return v;
}
private void Time_Handle(){
System.Timers.Timer startTimer=new System.Timers.Timer(70);
startTimer.Elapsed += new ElapsedEventHandler(Activate_Pressure);
}
private void Activate_Pressure(object source, ElapsedEventArgs e){
pressure=2.5;
double v=Pressure_Effect(pressure, 70);
}
Ce que je veux faire est Activate_Pressure
est superflu le sens que si je peux transmettre l'événement directement à Pressure_Effect
qui je ne sais pas comment. Je suis novice en C#, donc s'il vous plaît garder avec moi. Je sais que je n'ai pas activé la minuterie et d'autres pièces essentielles peut être manquant dans ce code, mais j'ai posté juste pour faire ma question claire.
- Tu vas vouloir prendre cette demande dans un salon de discussion à tout le moins.
- ici est votre exemple
- google peut vous donner l'exemple
- Pouvez-vous montrer le code que vous utilisez pour définir le feu et l'événement? Ce que vous voulez faire est possible, mais vous avez besoin de poser quelques bases pour nous. Voir ce thread pour un exemple qui n'est pas adapté à votre situation spécifique.
- J'ai ajouté un code pour être plus clair
- Est
pressure
toujours2.5
, ou d'où cela vient? Paramètre(s) représente(nt) la quantité de temps qui s'est écoulé? Avez-vous besoin de le temps écoulé en millisecondes? - C'est exactement ce que j'ai mis pour montrer ce que je faisais. Dans mon programme, Il sera une moyenne pondérée des intervalles de temps qui s'est écoulé dans certains échelle. La pression est en fait, dans mon programme, un membre privé de la classe déclarée double. Le temps écoulé, je pensais de l'aide de certaines propriétés de l'objet Timer qui je n'ai pas encore fait des recherches entièrement, mais en attendant, 70 que j'ai passé à Pressure_Effect, je pense que ce serait bien parce que cela va représenter 70 secondes d'intervalle. J'ai encore besoin de trouver la meilleure façon de l'obtenir.
- Quelles sont les unités de temps vous avez besoin de la minuterie? L'événement qui déclenche fournit un
SignalTime
propriété qui est unDateTime
struct et contient la date exacte de l'événement déclenché. Un travail supplémentaire peuvent avoir besoin d'aller en chercher comment beaucoup de temps s'est écoulé, si vous êtes à partir de0
, par exemple. - Ok, donc vous avez besoin de secondes.
t
sera un certain nombre de secondes,pressure
est une constante ou d'une autre valeur d'une variable privée dans votre classe, et vous voulez faire un peu de type de travail, tous les 70 millisecondes, est-ce correct? - J'ai besoin de quelque chose en millisecondes. Cependant, Puisque l'événement est déclenché toutes les 70 millisecondes, je peux encore utiliser 70 millisecondes codée en dur. Pas un bon choix, mais peut continuer jusqu'à ce que je devenir plus compétent avec la langue.
- Oui, c'est vrai.
- Dernières questions, je pense: quel est le mécanisme de l'appel de
Time_Handle
? Avez-vous besoin de la minuterie pour démarrer/arrêter basé sur quelque chose d'extérieur qui se passe? - J'écris ceci pour un de mes ami jeu (Logique de la Mécanique des Fluides). La chose est, je voudrais commencer l'Time_Handle lorsque je reçois un signal à partir d'un bouton et souhaite arrêter quand quelqu'un relâche le bouton. Mais je pense que cela ne doit pas être ma préoccupation. J'ai peut-être mal.
Vous devez vous connecter pour publier un commentaire.
Sur la base de notre fil de commentaires, je vais voir quelque chose comme ce qui se passe:
Je ne pense pas que c'est mauvais pour diviser
PressureEvent
un peu plus. Je voudrais quand même garder une fonction qui calculev
sur son propre, compte tenu de certains paramètres, et puis tout ce que vous devez faire une fois que vous avezv
pourrait être sa propre méthode.Si vous souhaitez ignorer certains des arguments passés à la gestionnaire d'événements, et d'ajouter quelques autres, d'une valeur fixe. Vous avez juste montré comment vous pouvez le faire; vous effectuez une nouvelle méthode de la signature que le compte à rebours de l'événement s'attend, et puis vous omet les arguments que vous ne voulez pas, et d'ajouter des valeurs fixes que vous voulez. Vous avez raison de penser que c'est un assez bavard moyen de réaliser ce que vous voulez. Il est en effet plus laconique de la syntaxe. Vous pouvez utiliser une méthode anonyme, plus précisément d'un lambda, à faire ce que vous voulez. C'est la syntaxe pour que: