Re: Invoke und Threads, die die GUI verändern

Tech-Archive recommends: Fix windows errors by optimizing your registry



Hallo Frank,

vielen Dank, es funktioniert nun.
Es hat etwas gedauert, bis ich verstanden habe, was der Unterschied
zwischen meiner und deiner Objecterstellung war.
Um es für andere, die ein ähnliches Problem haben zu erläutern hier
ein geänderter Codeabschnitt zur Verdeutlichung:

//Delegate mit einem ObjectArrray und einem String als Parameter
public delegate void ExcelImport(object[] WTGrenzen,string
Tabellenname);

//ObjectArray Erstellung, wobei auf bereits vorhandenes WTGrenzen Array
zurückgegriffen wird
object[] oWTGrenzen = new object[]
{WTGrenzen[0],WTGrenzen[1],WTGrenzen[2],WTGrenzen[3]};


//ParameterObject Array Erstellung, das zur Übergabe von der Invoke
Methode benötigt wird
object[] param = new object[2];
param[0] = oWTGrenzen;
param[1] = (object)Tabellenname;

//Aufruf der Invoke Methode
zufüllendesDatagrid.Invoke(new
ExcelImport(this.DataGridMitExcelDatenFüllen),param);

Und der Vollständikeit halber noch die durch den delegate Aufgerufene
Methode:
private void DataGridMitExcelDatenFüllen(object[] oWTGrenzen,string
Tabellenname)
{


WTGrenze[] WTGrenzen = new WTGrenze[oWTGrenzen.Length];

for(int i=0;i<WTGrenzen.Length;i++)
{
WTGrenzen[i] = (WTGrenze)oWTGrenzen[i];
}


DataRow myDR = this.dataSet1.Tables[Tabellenname].NewRow();
myDR[0] = WTGrenzen[0].Temperatur.ToString();
myDR[1] = WTGrenzen[0].Freibetrag.ToString();
this.dataSet1.Tables[Tabellenname].Rows.Add(myDR);


DataRow myDR2 = this.dataSet1.Tables[Tabellenname].NewRow();
myDR2[0] = WTGrenzen[1].Temperatur.ToString();
myDR2[1] = WTGrenzen[1].Freibetrag.ToString();
this.dataSet1.Tables[Tabellenname].Rows.Add(myDR2);


DataRow myDR3 = this.dataSet1.Tables[Tabellenname].NewRow();
myDR3[0] = WTGrenzen[2].Temperatur.ToString();
myDR3[1] = WTGrenzen[2].Freibetrag.ToString();
this.dataSet1.Tables[Tabellenname].Rows.Add(myDR3);

DataRow myDR4 = this.dataSet1.Tables[Tabellenname].NewRow();
myDR4[0] = WTGrenzen[3].Temperatur.ToString();
myDR4[1] = WTGrenzen[3].Freibetrag.ToString();
this.dataSet1.Tables[Tabellenname].Rows.Add(myDR4);

}

Nochmal vielen Dank und Grüsse
Akiono Wan

.


Quantcast