Über invoke in einem backgroundworker label refresh?
-
Hallo,
ich möchte über einen BackGroundWorker Thread.
Mit einer Schleife meinem label1 bei jedem Schleifendurchlauf einen Wert anzeigen.
Direkt kann ich jan icht auf das label zugreifen.Jetzt habe ich gelesen das, das nur mitels invoke möglich ist.
Irgendwie komme ich aber mit der Anleitung dafür gar nicht zurecht.
Bisher habe ich das so gelöst.
while(1)
{
label1->text=string1;
label1->refresh();
}Vielleicht könnte mir jemand zeigen wie man selbiges aus einem Thread mit invoke ausführt.
-
hier gibts ein bsp:
siehe einer meiner posts:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-208716-and-highlight-is-invoke.html
-
Danke habs hinbekommen.
War eigneltich gar nicht so schwer wenn man mal weiß wie geht//Zuerst die beiden Funktionen//
//Diese Funktion aktualisiert die labels//
public: void DoUpdate(Object ^o, EventArgs ^e)
{label1->Text = lesen1;
richTextBox1->AppendText(lesen1);
}//Hier wird die eigentliche Arbeit ausgeführt//
void schleife1()
{
while(1)
{
this->serialPort1->Open();
lesen1=this->serialPort1->ReadLine();
this->serialPort1->Close();
array<Object^> ^args = {this, e};
this->Invoke(gcnew EventHandler(this, &Form1::DoUpdate), args);}
}//Dann im Background Worker die Hauptfunktion aufrufen//
public: System::Void backgroundWorker1_DoWork(System::Object^ sender, System::ComponentModel::DoWorkEventArgs^ e) {
schleife1();}