Je soupçonne un truc, mais je suis pas sûr... essaie de mettre un breakpoint sur Main.Invoke, et regarde la valeur de Main.Visible. Quelque chose me dit que c'est False, ce qui voudrait dire que ça fait référence à une autre instance de la Form...
Je soupçonne un truc, mais je suis pas sûr... essaie de mettre un breakpoint sur Main.Invoke, et regarde la valeur de Main.Visible. Quelque chose me dit que c'est False, ce qui voudrait dire que ça fait référence à une autre instance de la Form...
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
ALors en mettant le breakpoint sur main.invoke, puis en regardant ds watch, il me dit :
Ai je fait quelque chose de travers?Invoke Name 'Invoke' is not declared.
Anax
C'est pas Invoke qu'il faut regarder dans watch (c'est une méthode, pas une propriété...), mais Visible. L'idée était de voir si Main faisait référence à la Form déjà ouverte, ou à une nouvelle.
Bon, j'ai fait un test vite fait : si tu es dans le même thread, Main fait référence à la Form déjà ouverte, mais si tu es dans un autre thread, c'est une autre instance de Main
Voilà qui confirme mon opinion sur le fait d'utiliser le nom de la classe comme si c'était une variable (cf. ma remarque dans le message de 21h39)... ça a des effets de bord difficilement prévisibles.
Donc, j'en reviens à ce que je disais : il faut passer à la classe DnsTask une référence vers la Form. Tu peux ajouter un champ de type Form dans la classe, et ajouter un paramètre au constructeur :
Dans la méthode DnsResolve, tu remplaces Main par theForm
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 ... Private theForm As Form Public Sub New(ByVal hostname As String, ByVal ip As String, ByVal lvi As ListViewItem, ByVal f As Form) Host_Name = hostname Host_IP = ip Me.ResultLvi = lvi Me.theForm = f End Sub ...
Et quand tu crées l'objet DnsTask, tu lui passes Me en dernier paramètre.
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Juste une petite question par rapport a ton threadPool, comment savoir s'il reste des actions ds le pool ou si le pool est vide?
En fait je voudrais realiser à la suite de cela la progressbar. De ce fait, je pense qu'il faut que je sache conbien d'actions sont lancés en totalité vers le nombre d'actions restantes. A moins que tu puisses me donner une piste de recherche.
J'ai cherché hier soir un peu mais tous ce que je trouve fonctionne avec un backgroundworker
Merci d'avance
Anax
Apparemment le ThreadPool ne peut pas indiquer combien de tâches sont en cours
Par contre tu peux maintenir une liste d'objets DnsTask, et vérifier si DnsResult et ReverseDnsResult sont renseignés... ça t'indiquera si la tâche a été traitée. Ou alors tu peux ajouter à DnsTask une propriété qui indique son état (pas traitée, traitement en cours, traitement terminé...)
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Ok je comprends. Est ce que ceci est envisageable :
Dans mon form principal, je maintiens une variable avec le nombre de ligne du listview. Sachant qu'un thread = une ligne. J’ai le nombre total de thread qui vont être lancé.
Je place ce chiffre ds un textbox qui se trouve ds mon form principal.
Via le Invoke, je viens décrémenter ce chiffre avec une formule du style : matextbox = matextbox – 1. Ceci nous donnera un nombre décroissant.
Par ailleurs, je rends ma textbox invisible.
Par contre je pense que je suis obligé de placer tout cela dans mon form principal ou alors est il possible de placer cela ds un autre form (genre fenêtre indiquant qu’on est en cours de traitement) ?
Merci encore pour tes reponses
Anax
Ok Tomlev, merci bcp pour toutes ces infos
Ca marche impec et j'ai reussi à me débrouiller pour le reste.
Merci encore pour toutes ces réponses
Anax
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager