pomoc c# - NullReferenceException

Sekcia: Programovanie 25.10.2008 | 21:50
boris   Návštevník
ahojte, potrebujem pomoc v c# (VS 2005). Robim packet sniffer v c# pomocou Sharppcap-u, no v c# som novacik...isiel som podla manualu v Sharppcap-u, nic zlozite to nebolo, vsetko som si spravil, ako tam bolo napisane. Sharppcap ma na handling odchytenych ramcov svoju event :

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();
}
}
    • Re: pomoc c# - NullReferenceException 25.10.2008 | 21:56
      boris   Návštevník
      Opravujem tento kod:

      private void timer1_Tick(object sender, EventArgs e)
      {
      lock (locker)
      {
      listView1.Items.AddRange(collection); //tu som dal nespravne meno premennej
      collection.Clear();
      }
      }
      • Re: pomoc c# - NullReferenceException 25.10.2008 | 22:24
        boris   Návštevník
        A ešte pridávam informáciu o parametri Object sender v tej static metode. Je typu PcapDevice, čo je vlastne interfejs, na ktorom to odchytavanie prebieha...
    • Re: pomoc c# - NullReferenceException 25.10.2008 | 23:44
      Avatar Zefram Cochrane MS Windows Vista Ultimate 64bi  Používateľ
      toto je stranka o programovani v linuxe, nie vo VS 2005, pyttaj sa na msdn
      admini zmazat thread