Note: Partie d'une série: C#: Accessing form members from another class et How to access form objects from another cs file in C#.Accès aux membres de la classe avec Invoke à partir d'un thread différent en C#
Bonjour,
L'idée est d'informer l'utilisateur en utilisant le mémo lorsqu'un paquet est reçu/envoyé dans un client TCP.
Après quelques corrections, la solution la plus appropriée semble être celui-ci
public string TextValue
{
set
{
this.Memo.Text += value + "\n";
}
}
Voilà comment il est appelé
var form = Form.ActiveForm as Form1;
if(form != null)
form.TextValue = "Test asdasd";
Cependant, en appelant le code lance une exception, à cause de fil non sécurisée appel.J'ai trouvé une solution à msdn, mais je ne peux pas sembler acquérir la méthode qu'ils ont utilisée là.
Ceci est mon remake, qui ne fonctionne pas.
private void SetTextMemo(string txt)
{
if(this.Memo.InvokeRequired)
{
this.Invoke(SetTextMemo,txt); //error here
}
else
{
this.Memo.Text += txt + "\n";
}
}
erreurs:
argument '1': ne peut pas convertir les 'groupe de procédé' à 'System.Delegate'
Argument '2': ne peut pas convertir les 'chaîne' à « objet [ Fondamentalement, j'essaye d'accéder à la note (ou plus probablement a ajouté, ajoutez le texte au mémo) d'un autre fil en utilisant Invoke. Je ne l'ai jamais utilisé avant, peut-être c'est pourquoi je me trompe.
Qu'en est-il de l'utilisation d'un événement? – bytebender