Autor Beitrag
vreden123
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 95
Erhaltene Danke: 2



BeitragVerfasst: Mi 04.05.11 22:35 
Hallo,

Mein Programm lässt länger andauernde Aufgaben in einem neuem Thread ausführen.
Allerdings erscheint immer diese Fehlermeldung beim Debug:
Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
unzwar bei

ausblenden C#-Quelltext
1:
this.registryinstance.registryEventresult += new EventHandler<registryArgsresult>(registry_result_seitelistviewhinzufuegenuberpruefung);					


Einen neuen Eventhandler habe ich ja bereits mit:
ausblenden C#-Quelltext
1:
+= new EventHandler					


Leider weiß ich nicht ob das Objekt nicht NULL ist weil ich es ja neu erstellt habe.

Hier ist der Code von dem neuen Thread:

ausblenden volle Höhe C#-Quelltext
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:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
class ThreadClass
        {
            public string s_useragent;
            public string s_seitenname;
            public string s_url;
            public string s_uberpruefungen_gesammt;
            public string s_uberpruefungen_online;
            public string s_uberpruefungen_offline;
            public string s_uberpruefungen_auto1;
            public string s_uberpruefungen_auto2;
            public string s_uberpruefungen_auto3;
            public string s_uberpruefungen_auto4;
            public string s_uberpruefungen_auto5;
            public string s_uberpruefungen_auto6;
            public string s_uberpruefungen_manuell1;
            public string s_uberpruefungen_manuell2;
            public string s_uberpruefungen_manuell3;
            public string s_uberpruefungen_manuell4;
            public string s_uberpruefungen_manuell5;
            public string s_uberpruefungen_manuell6;
            public string s_uberpruefungen_nichtdrin1;
            public string s_uberpruefungen_nichtdrin2;
            public string s_uberpruefungen_nichtdrin3;
            public string s_uberpruefungen_nichtdrin4;
            public string s_uberpruefungen_nichtdrin5;
            public string s_uberpruefungen_nichtdrin6;
            public string s_fertiguberpruefen;
            public int i_seitenanzahl_uberpruefen;
            public int i_fehler_seite_uberpruefen;
            public int i_uberpruefungen_aktuelle_seite;
            public int wert1 = 0;
            public int wert2 = 0;
            public int ergebnis = 0;
            public string s_internet_check;
            public string s_titel;
            public string s_description;
            public string s_author;
            public string s_publisher;
            public string s_copyright;
            public string s_keywords;
            public string s_stylesheet;
            public string s_background;
            public string s_backgroundimage;
            public string s_arr;
            public delegate void berechnungFertig(int e);
            public event berechnungFertig ffertig;

            private download downloadinstance { get; set; }
            private registry registryinstance { get; set; }

            void download_result(object sender, downloadArgsresult e)
            {
                try
                {
                    s_internet_check = e.s_internet_check;
                    s_titel = e.s_titel;
                    s_author = e.s_author;
                    s_background = e.s_background;
                    s_backgroundimage = e.s_backgroundimage;
                    s_copyright = e.s_copyright;
                    s_description = e.s_description;
                    s_keywords = e.s_keywords;
                    s_publisher = e.s_publisher;
                    s_stylesheet = e.s_stylesheet;
                    s_arr = e.s_arr;
                }
                catch
                {
                    //bugreport("25" + e.s_internet_check + "" + e.s_keywords + "");
                }
            }

            void registry_result_seitelistviewhinzufuegenuberpruefung(object sender, registryArgsresult e)
            {
                try
                {
                    if (e.s_job == "seiten_laden_listview_uberpruefen")
                    {
                        s_seitenname = e.s_seitenname;
                        s_url = e.s_url;
                        s_fertiguberpruefen = e.s_fertiguberpruefen;
                        s_uberpruefungen_gesammt = e.s_uberpruefungen_gesammt;
                        s_uberpruefungen_online = e.s_uberpruefungen_online;
                        s_uberpruefungen_offline = e.s_uberpruefungen_offline;
                        s_uberpruefungen_auto1 = e.s_uberpruefungen_auto1;
                        s_uberpruefungen_auto2 = e.s_uberpruefungen_auto2;
                        s_uberpruefungen_auto3 = e.s_uberpruefungen_auto3;
                        s_uberpruefungen_auto4 = e.s_uberpruefungen_auto4;
                        s_uberpruefungen_auto5 = e.s_uberpruefungen_auto5;
                        s_uberpruefungen_auto6 = e.s_uberpruefungen_auto6;
                        s_uberpruefungen_manuell1 = e.s_uberpruefungen_manuell1;
                        s_uberpruefungen_manuell2 = e.s_uberpruefungen_manuell2;
                        s_uberpruefungen_manuell3 = e.s_uberpruefungen_manuell3;
                        s_uberpruefungen_manuell4 = e.s_uberpruefungen_manuell4;
                        s_uberpruefungen_manuell5 = e.s_uberpruefungen_manuell5;
                        s_uberpruefungen_manuell6 = e.s_uberpruefungen_manuell6;
                        s_uberpruefungen_nichtdrin1 = e.s_uberpruefungen_nichtdrin1;
                        s_uberpruefungen_nichtdrin2 = e.s_uberpruefungen_nichtdrin2;
                        s_uberpruefungen_nichtdrin3 = e.s_uberpruefungen_nichtdrin3;
                        s_uberpruefungen_nichtdrin4 = e.s_uberpruefungen_nichtdrin4;
                        s_uberpruefungen_nichtdrin5 = e.s_uberpruefungen_nichtdrin5;
                        s_uberpruefungen_nichtdrin6 = e.s_uberpruefungen_nichtdrin6;
                        s_fertiguberpruefen = e.s_fertiguberpruefen;
                    }
                }
                catch
                {
                    //bugreport("66" + e.s_seitenname + "");
                }
            }

            public void ausrechnen()
            {
                //using (WebClient client = new WebClient())
                //{
                //    string s_arr;
                //    s_arr = client.DownloadString("http://www.google.de");
                //    s_arr = s_arr.Replace("\n", "");
                //}

                //if (myThread == null)
                //{
                //    MessageBox.Show("null");
                //}

                this.registryinstance.registryEventresult += new EventHandler<registryArgsresult>(registry_result_seitelistviewhinzufuegenuberpruefung);
                this.registryinstance.seiten_laden_listviewuberpruefen(i_uberpruefungen_aktuelle_seite);
                this.downloadinstance.downloadEventresult += new EventHandler<downloadArgsresult>(download_result);
                this.downloadinstance.download_seite_auswertung(s_url, s_useragent);
                this.ergebnis = this.wert1 + this.wert2;
                ffertig(ergebnis);
            }
        }


Mit diesem Code rufe ich den neuen Thread auf:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
                        ThreadClass myTC = new ThreadClass();
                        myTC.wert1 = 122;
                        myTC.wert2 = 77;
                        myTC.ffertig += new ThreadClass.berechnungFertig(myTC_fertig);
                        System.Threading.Thread myThread = new System.Threading.Thread(myTC.ausrechnen);
                        myThread.Start();


Für jede Hilfe bin ich sehr dankbar.
Dr. Hallo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 110
Erhaltene Danke: 13

XP
C/C++/C#
BeitragVerfasst: Mi 04.05.11 23:49 
ja die fehlermeldung sagts doch. deine registryinstance ist null und möchte vor der eventverknüpfung gerne gefüllt werden.
vielleicht hab ich brett vorm kopf aber wie willst du denn registryinstance füllen, wenn nicht in der klasse selbst?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19338
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 05.05.11 04:54 
user profile iconvreden123 hat folgendes geschrieben Zum zitierten Posting springen:
Leider weiß ich nicht ob das Objekt nicht NULL ist weil ich es ja neu erstellt habe.
Wo hast du registryinstance denn erstellt? Wenn du es getan hast, dann hast du vergessen den entsprechenden Code zu posten. Da hat user profile iconDr. Hallo schon recht.

Mir ist aber etwas anderes aufgefallen:
user profile iconvreden123 hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
            public string s_arr;
            public delegate void berechnungFertig(int e);
            public event berechnungFertig ffertig;

            private download downloadinstance { get; set; }
            private registry registryinstance { get; set; }
Normalerweise macht man das umgekehrt, das heißt die public Felder werden stattdessen als public Eigenschaften ggf. auf private Felder abgebildet.

Du hast die Felder aber als public deklariert und also direkt nach außen sichtbar gemacht, die Eigenschaften aber gerade nicht. :nut: Das ist zwar an sich nicht falsch, aber bist du sicher, dass du richtig verstanden hast was Eigenschaften machen? :gruebel:
Hier findest du ein Beispiel zu Eigenschaften:
msdn.microsoft.com/e...ibrary/x9fsa0sw.aspx
vreden123 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 95
Erhaltene Danke: 2



BeitragVerfasst: Do 05.05.11 21:17 
stimmt!

ausblenden C#-Quelltext
1:
2:
this.downloadinstance = new download();
this.registryinstance = new registry();


hat gefehlt!
Die Variablen werde ich dann anders Deklarienen, danke für den Hinweiß.