Pour accéder à une note sur mon formulaire, j'utilise le code suivantComment utiliser le filetage en toute sécurité pour une minuterie (Modifier les propriétés de la minuterie de différents fils)
public string TextValue
{
set
{
if (this.Memo.InvokeRequired)
{
this.Invoke((MethodInvoker)delegate
{
this.Memo.Text += value + "\n";
});
}
else
{
this.Memo.Text += value + "\n";
}
}
}
Je voudrais utiliser le même code pour activer/désactiver ma minuterie, mais il n'y a pas de propriété InvokeRequired pour un minuteur.
public int Timer
{
set
{
if (this.timer.InvokeRequired) //?? No such thing
{
this.Invoke((MethodInvoker)delegate
{
if (value == 1)
this.timer.Enabled = true;
else
this.timer.Enabled = false;
});
}
else
{
if (value == 1)
this.timer.Enabled = true;
else
this.timer.Enabled = false;
}
}
}
Comment activer la minuterie à partir d'un thread différent?
Oui, « ceci » est un objet de forme, mais je vous appelle cette fonction à partir d'un autre thread dans une section critique. –
C'est bien. Tout le booléen InvokeRequired vous indique si CurrentThread == ThreadThatCreatedTheObject. Le thread qui a créé le formulaire est le même thread que celui qui a créé le timer, cela fonctionnera. –
Non, ce n'est pas possible. Je ne peux pas activer la minuterie. –