MethodInvoker

De methodinvoke delegate is een delegate die je kunt gebruiken om je method asynchroneous uit te voeren. Wat dus handig en goed voor je Gui is. Hierbij moet je gebruik maakt van AsyncCallBack delegate. Deze wordt afgevuurd wanneer je method die je start met je methodinvoke delegate klaar is. Moet je deze wel verplicht starten met .begininvoke ( asynchroneous ) standaard .invoke is namelijk synchroneous.

 

Voorbeeld van method op andere thread uitgevoerd:


 

 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace Test { public partial class Form1 : Form { private MethodInvoker mi; private AsyncCallback ac; public Form1() { InitializeComponent(); mi = new MethodInvoker(start); ac = new AsyncCallback(finished); } private void button1_Click(object sender, EventArgs e) { mi.BeginInvoke(ac,null); } private void finished(IAsyncResult ir) { while (ir.IsCompleted ) { this.textBox1.Invoke((MethodInvoker)delegate() { this.textBox1.Text = "Finished"; }); } } private void start() { int teller =0; for (int i = 0; i < 100000; i++) { this.progressBar1.Invoke((MethodInvoker)delegate() { this.progressBar1.Increment(1); }); if (teller < 5000) teller++; else { teller = 0; this.progressBar1.Invoke((MethodInvoker)delegate() { this.progressBar1.Value = 0; }); } } teller = 0; } } }


Control invoke met een cast van standaard delegate naar een MethodInvoke delegate, kun je gebruiken, of heb je nodig om de controls op je Gui te bewerken.

 

{{opmerking.Naam}}:

{{opmerking.OpmerkingText}}

            

Saving your comment....

Naam is verplicht!
Email is verplicht!
Opmerking is verplicht!