Hallo!
Heute habe ich wieder ein Problem.
Ich zeige euch erstmal die wichtigen Ausschnitte aus meinem Code.
So weit so gut. Ich habe schon überprüft, ob die Arraydaten wirklich ankommen, dass tun sie.
Ich bin jetzt durch mehrere Abfragen draufgekommen, dass mein Problem beim Übertragen der Arrays liegt. Irgendwie werden die Arrays refeziert, anstatt eine Kopie zu machen. Sobald ich in der Simultation eine Veränderung im Array startwerte mache, verändert sich auch das Array array1 in dem Objekt Uebertragungswerte. Ich habe auch schon die Befehle Clone und Copy probiert. Aber irgendwie werde ich nicht ganz schlau aus diesen. Es wird trotzdem refenziert.
Kann mir einer bei diesem Problem helfen.
Heute habe ich wieder ein Problem.
Ich zeige euch erstmal die wichtigen Ausschnitte aus meinem Code.
VB.NET-Quellcode
- Public Class BGW_Uebergabe
- 'Diese Klasse dient der Übertragung von mehreren Arrays an den Backgroundworker-Threat
- Dim array1(7) As Byte
- Dim array2(3,5) As Byte
- Sub Array1speichern(ByVal wert As Array)
- array1 = wert
- End Sub
- Sub Array2speichern(ByVal wert As Array)
- array2 = wert
- End Sub
- Function Ausgabe_Array1(ByVal wert) As Array
- Ausgabe_Array1 = array1
- End Function
- Function Ausgabe_Array2() As Array
- Ausgabe_Array2 = array2
- End Function
- '...
- End Class
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- 'Die Arrays (startarray bzw. endarray) werden durch Eingaben im Formfenster bestimmt.
- Dim Uebertragung As New BGW_Uebergabe
- Uebertragung.Array1speichern(startarray)
- Uebertragung.Array2speichern(endarray)
- Backgroundworker1.RunWorkerAsync(Uebertragung)
- 'Neues Objekt wurde erzeugt, die Arrays in dem Objekt gespeichert und der Backgroundworker gestartet (Das Objekt wurde mitübertragen)
- End Sub
- Private Sub Backgroundworker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles Backgroundworker1.DoWork
- 'Die Arrays werden aus dem übertragenen Porzess ausgelesen.
- Dim startwerte(7) As Byte
- Dim endwerte(3,5) As Byte
- Dim Uebertragungswerte As BGW_Uebergabe
- Uebertragungswerte = e.Argument
- startwerte = Uebertragungswerte.Ausgabe_Array1
- endwerte = Uebertragungswerte.Ausgabe_Array2
So weit so gut. Ich habe schon überprüft, ob die Arraydaten wirklich ankommen, dass tun sie.
VB.NET-Quellcode
- For i= 1 to 10000
- 'Jede Menge Auweisungen zur Auswertung der Arraydaten.
- 'Es wird qwasi eine Simultation für den Wert i durchgeführt, dabei werden die Werte von startwerte verändert.
- 'Wenn diese Simultation nicht erfolgreich wird, dann soll dieser Fall verworfen werden und die startwerte sollen neu aus dem Objekt
- 'Uebertragungswerte geladen werden.
- If SimultationErfolgreich()=True Then
- 'Ergebnis wird ausgegeben
- End Sub
- Else
- startwerte = Uebertragungswerte.Ausgabe_Array1
- Next i
- End Sub
Ich bin jetzt durch mehrere Abfragen draufgekommen, dass mein Problem beim Übertragen der Arrays liegt. Irgendwie werden die Arrays refeziert, anstatt eine Kopie zu machen. Sobald ich in der Simultation eine Veränderung im Array startwerte mache, verändert sich auch das Array array1 in dem Objekt Uebertragungswerte. Ich habe auch schon die Befehle Clone und Copy probiert. Aber irgendwie werde ich nicht ganz schlau aus diesen. Es wird trotzdem refenziert.
Kann mir einer bei diesem Problem helfen.