20 likes | 145 Views
GUI event fra en tråd eksempel med WinForm. private void guiThread_BeskedModtager ( string besked) // TRICK MED RECURSIV KALD og INVOKE HVIS KONFLIKT MED GUI TRÅD { // GUI komponentern kan ikke tilgås direkte fra en anden tråd end GUI-tråden
E N D
GUI event fra en trådeksempel med WinForm private voidguiThread_BeskedModtager(string besked) // TRICK MED RECURSIV KALD og INVOKE HVIS KONFLIKT MED GUI TRÅD { // GUI komponentern kan ikke tilgås direkte fra en anden tråd end GUI-tråden // Det er nødvendigt at bruge Invoke metoden og lave en opstart, // hvor metode kører fra GUI tråd if (this.InvokeRequired) { this.Invoke(new TrådMonitor.TrådEventType(guiThread_BeskedModtager), besked); // indirekte recursion, men nu fra GUI tråd return; // stop her, da metoden nu "gentages" (Invoke) fra GUI tråd } // denne del vil nu afvikles fra gui tråden tbxLog.AppendText(besked + "\r\n"); }
GUI event fra en trådeksempel med Windows - WPF private voidguiThread_BeskedModtager(string besked) // TRICK MED RECURSIV KALD og INVOKE HVIS KONFLIKT MED GUI TRÅD { // GUI komponentern kan ikke tilgås direkte fra en anden tråd end GUI-tråden // Det er nødvendigt at bruge Invoke metoden og lave en opstart, // hvor metode kører fra GUI tråd if (!this.Dispatcher.CheckAccess()) { this.Dispatcher.Invoke(new TrådMonitor.TrådEventType(guiThread_BeskedModtager), besked); // indirekte recursion, men nu fra GUI tråd return; // stop her, da metoden nu "gentages" (Invoke) fra GUI tråd } // denne del vil nu afvikles fra gui tråden tbxLog.AppendText(besked + "\r\n"); }