Entwickler-Ecke

WinForms - thread-übergreifende methodenaufrufe mit parametern


Cäptin Pommes - Do 08.03.12 17:58
Titel: thread-übergreifende methodenaufrufe mit parametern
hi,

ich wollte mit

C#-Quelltext
1:
workBench.Invoke(new System.Windows.Forms.MethodInvoker(workBench.SetProgressMax), new Object[] {newDirs.Count - previewCount});                    

die Methode aufrufen und die Parameter übergeben ... so ist auch das beispiel in der MSDN
ich bekomm aber die Meldung das keine Überladung der SetProgressMax Methode übereinstimmt :/
die Methode verlangt einfach nur nen int als Parameter


jaenicke - Do 08.03.12 18:19

Also bei mir sieht das Beispiel "ein wenig" anders aus. :gruebel:
http://msdn.microsoft.com/de-de/library/system.windows.forms.methodinvoker.aspx hat folgendes geschrieben:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
public partial class Form1 : Form
{
    public Form1()
    {
        // Create a timer that will call the ShowTime method every second.
        var timer = new System.Threading.Timer(ShowTime, null01000);           
    }

    private void ShowTime(object x)
    {
        // Don't do anything if the form's handle hasn't been created 
        // or the form has been disposed.
        if (!this.IsHandleCreated && !this.IsDisposed) return;

        // Invoke an anonymous method on the thread of the form.
        this.Invoke((MethodInvoker) delegate
        {
            // Show the current time in the form's title bar.
            this.Text = DateTime.Now.ToLongTimeString();
        });

    }
}


Cäptin Pommes - Do 08.03.12 18:43

ähh ja hab grad selbst gemaerkt ^^ ... ich hab da sachen durcheinander gebracht sry ... habs aber auch grad so hinbekommen :)