| Autor |
Beitrag |
asterix76
Hält's aus hier
Beiträge: 15
|
Verfasst: Mo 09.03.09 16:19
Hallo, wie kann ich den Inhalt eines IDictionary in eine ListBox ausgeben?
C#-Quelltext 1: 2: 3: 4: 5:
| IDictionary<IPEndPoint, Variable> agent = Manager.Discover(VersionCode.V2, new IPEndPoint(IPAddress.Broadcast, 161), new OctetString("public"), 100); foreach (KeyValuePair<IPEndPoint, Variable> pair in agent) { listBox_items.Items.Add(pair.Key + " announces " + pair.Value.Data); } |
Diese funktioniert nicht. Die Ausgabe auf die Konsole hingegen funzt:
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| IDictionary<IPEndPoint, Variable> agent = Manager.Discover(VersionCode.V2, new IPEndPoint(IPAddress.Broadcast, 161), new OctetString("public"), 100); foreach (KeyValuePair<IPEndPoint, Variable> pair in agent) { Console.WriteLine(pair.Key + " announces " + pair.Value.Data); }
Console.Write("Press any key to continue . . . "); Console.ReadKey(true); } |
Warum ist das so?
THX füe Eure Antworten
Moderiert von Kha: C#-Tags hinzugefügtModeriert von Kha: Topic aus C# - Die Sprache verschoben am Mo 09.03.2009 um 16:42
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Mo 09.03.09 17:47
asterix76 hat folgendes geschrieben : | | Diese funktioniert nicht. |
Was sich wie bemerkbar macht...? Einen Syntaxfehler sehe ich jedenfalls nicht.
_________________ >λ=
|
|
asterix76 
Hält's aus hier
Beiträge: 15
|
Verfasst: Mo 09.03.09 18:44
Hallo, ich habe folgendes Programm:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31:
| using System; using System.Collections.Generic; using System.Net; using Lextm.SharpSnmpLib; namespace TestDiscovery { class Program { public static void Main(string[] args) { IDictionary<IPEndPoint, Variable> agents = Manager.Discover(VersionCode.V2, new IPEndPoint(IPAddress.Broadcast, 161), new OctetString("public"), 100); foreach (KeyValuePair<IPEndPoint, Variable> pair in agents) { Console.WriteLine(pair.Key + " announces " + pair.Value.Data); }
Console.Write("Press any key to continue . . . "); Console.ReadKey(true); }
} } |
und will die Ausgabe eigentlich nur in einer WindowsForm haben.
Leider bekomme ich das nicht hin.
Liegt es vielleicht an der "Lextm.SharpSnmpLib" oder kann man so ein Kommandozeilen Toll nicht einfach in eine Windows Form überführen? Vielleicht hat der Autor seinen Quellcode auch so gesichert, dass man nichts verändern darf
Beachte die ersten Zeilen im Code. Das habe ich bis jetzt auch nicht rausbekommen, was der Autor mir damit sagen will.
Hat jemand ne Idee?
THX für die Antworten
Moderiert von Kha: C#-Tags hinzugefügt
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mo 09.03.09 19:09
Erstelle lieber eine neue WindowsForms Anwendung und füge dann den Code an die entsprechenden Stellen ein. In deinem Fall vermutlich am besten in einen ButtonClick.
Bei einer WindowsForms Anwendung musst du ereignisorientiert vorgehen, d.h. du musst auf z.B. einen ButtonClick reagieren. Du kannst dafür nicht einfach die main-Methode benutzen.
|
|
asterix76 
Hält's aus hier
Beiträge: 15
|
Verfasst: Mo 09.03.09 19:19
Hallo ich habe jetzt folgendes:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46:
| using System; using System.Collections.Generic; using System.Net; using Lextm.SharpSnmpLib; using System.ComponentModel; using System.Drawing; using System.Windows.Forms; using System.Collections;
namespace Testprogi { public partial class Form1 : Form { public Form1() { InitializeComponent(); }
private void Form1_Load(object sender, EventArgs e) {
}
private void button1_Click(object sender, EventArgs e) { discover(); } public void discover() {
IDictionary<IPEndPoint, Variable> agents = Manager.Discover(VersionCode.V2, new IPEndPoint (IPAddress.Broadcast, 161), new OctetString("public"), 100); foreach (KeyValuePair<IPEndPoint, Variable> pair in agents) { listBox_items.Items.Add(pair.Key + " announces " + pair.Value.Data); }
}
} |
Wenn ich das Programm starten bzw. debuggen will kommt in der Ausgabe folgende Meldung:
The thread 0xb64 has exited with code 0 (0x0).
Was kann das sein?
}
Moderiert von Kha: C#-Tags hinzugefügt
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mo 09.03.09 19:29
Hast du denn eine echte Windows Forms Anwendung? Denn wenn das Formular nicht angezeigt wird, dann nutzt es dir auch nix, und das passiert in der main-Methode.
Bitte setze deinen Quelltext hier im Forum in C#-Tags indem du entweder vor und nach dem Quelltext unter Bereiche auf das + neben C# klickst oder indem du den Quelltext markierst und einmal drauf klickst.
Du kannst es auch manuell so schreiben: Quelltext 1:
| <span class="inlineSyntax">{PROTECTTAG4365db6a7f646de851617c84df4e6fc4}</span> |
|
|
asterix76 
Hält's aus hier
Beiträge: 15
|
Verfasst: Mo 09.03.09 19:42
Jo erst einmal sorry, mit dem Style für den Sourcecode.
Wie bekomme ich diesen Sourcecode zu einer WinForm Anwendung:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32:
| using System; using System.Collections.Generic; using System.Net; using Lextm.SharpSnmpLib; namespace TestDiscovery { class Program { public static void Main(string[] args) { IDictionary<IPEndPoint, Variable> agents = Manager.Discover(VersionCode.V2, new IPEndPoint(IPAddress.Broadcast, 161), new OctetString("public"), 100); foreach (KeyValuePair<IPEndPoint, Variable> pair in agents) { Console.WriteLine(pair.Key + " announces " + pair.Value.Data); }
Console.Write("Press any key to continue . . . "); Console.ReadKey(true); }
} } |
Ich habe bereits eine neue Windows Form erstellt:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38:
| using System; using System.Collections.Generic; using System.Net; using Lextm.SharpSnmpLib; using System.ComponentModel; using System.Drawing; using System.Windows.Forms; using System.Collections;
namespace SNMP_Discovery { public partial class Form1 : Form { public Form1() { InitializeComponent(); }
private void button1_Click(object sender, EventArgs e) { discover(); } public void discover() {
IDictionary<IPEndPoint, Variable> agents = Manager.Discover(VersionCode.V2, new IPEndPoint(IPAddress.Broadcast, 161), new OctetString("public"), 100); foreach (KeyValuePair<IPEndPoint, Variable> pair in agents) { listBox_items.Items.Add(pair.Key + " announces " + pair.Value.Data); } }
}
} |
das Porg macht aber nichts und es kommt nach einiger Zeit die Meldung "Keine Rückmeldung"
Wenn ich eine MessageBox.Show Anweisung vor der IDictionary platziere, wird diese auch noch angezeigt.
Wenn ich die MessageBox aber danach vor die foreach-Schleife setze, kommt es nicht mehr.
Das heisst es muss ja schon bei der Erstellung des IDictionarys ein Fehler passieren.
Bitte helft mir. 
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Mo 09.03.09 19:55
asterix76 hat folgendes geschrieben : | | Das heisst es muss ja schon bei der Erstellung des IDictionarys ein Fehler passieren. |
Jupp, wenn auch eher eine Endlosschleife/Dead Lock/... als eine Exception, denn bei einer solchen müsste der Debugger anspringen. Der Bug muss also in dieser Library stecken.
_________________ >λ=
|
|
asterix76 
Hält's aus hier
Beiträge: 15
|
Verfasst: Mo 09.03.09 20:08
Ist es denn wirklich ein Bug in der Library, wenn es mit der Kommando-Zeile funktioniert?
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Mo 09.03.09 20:12
Wenn es an dieser einen Zeile hakt, bleiben nicht viele Alternativen übrig  .
PS: Du könntest beim "Hängen" auch mal im Debugger auf "Break" klicken und schauen, in welcher Methode er landet. Ohne Source der Lib wird dir das aber natürlich nicht allzu viel bringen.
_________________ >λ=
|
|
|