private static void device_PcapOnPacketArrival1(object sender, Packet packet)
ktore je ako vidite static. Z tejto metody potrebujem ale pristupovat do ListView, do ktoreho zapisujem informacie o pakete (MAC adresy, IP adresy, vnorene protokoly,...).
Tu prichadza moj prvy problem - "ako do tejto static metody poslat referenciu na moj ListView, ktory je nonstatic"; odpoved - "neviem".
Rozhodol som sa teda vytvorit taketo nieco - pridal som member variable do mojho kodu:
namespace Sniffer
{
public partial class Form1 : Form
{
static ListView.ListViewItemCollection collection = new ListView.ListViewItemCollection(null);
...
private static void device_PcapOnPacketArrival1(object sender, Packet packet)
...
}
to null preto, lebo nechcem aby bola naviazana na listview. aby bola samostatna...
nasledne som pridal do kodu hore zmienenej metody tieto riadky:
ListViewItem item = new ListViewItem();
...
//tu som nastavil jeho parametre
...
lock (locker)
{
collection.Add(item);
}
posledny prikaz mi vyhadzuje takuto exception:
"A first chance exception of type 'System.NullReferenceException' occurred in System.Windows.Forms.dll
at System.Windows.Forms.ListView.ListViewNativeItemCollection.Add(ListViewItem value)
at System.Windows.Forms.ListView.ListViewItemCollection.Add(ListViewItem value)
at Sniffer.Form1.device_PcapOnPacketArrival(Object sender, Packet packet)"
Viete mi niekto povedat, co s tym??? sa s tym zabavam uz asi 3 hodiny...ani neviem pomenovat ten problem, ze by som si to sam vygooglil...Dakujem vsetkym za kazdy hint...
PS: info o ramcoch, ktore by som mal ulozene v
collection
som nasledne chcel pomocou timera pravidelne do listview pridavat takto:private void timer1_Tick(object sender, EventArgs e)
{
lock (locker)
{
listView1.Items.AddRange(coll1);
coll1.Clear();
}
}
private void timer1_Tick(object sender, EventArgs e)
{
lock (locker)
{
listView1.Items.AddRange(collection); //tu som dal nespravne meno premennej
collection.Clear();
}
}
Object sender
v tej static metode. Je typu PcapDevice, čo je vlastne interfejs, na ktorom to odchytavanie prebieha...admini zmazat thread