Parameter count mismatch with Invoke?

22,403

The error occurs because of array covariance; an array of strings is assignable to object[]. This causes the Invoke method to treat each element of the string array as if it should be an argument to the AddListViewItem method.

Here's a fix:

Invoke(new Action<string[]>(AddListViewItem), new object[] {Data});

(or)

Invoke(new Action<string[]>(AddListViewItem), (object)Data);

This makes it crystal-clear to Invoke that the target method takes a single parameter.

Share:
22,403
sooprise
Author by

sooprise

I like to program, but am a noob, which is why I'm here. &lt;-My sexy fatbooth picture

Updated on June 01, 2020

Comments

  • sooprise
    sooprise almost 4 years

    The code block below results in the error: TargetParameterCountException was unhandled by user code. Parameter count mismatch.

        public void AddListViewItem(string[] Data)
        {
            if (InvokeRequired)
            {
                Invoke(new Action<string[]>(AddListViewItem), Data);
            }
            else
            {
                ListViewData.Items.Add(Data[0]).SubItems.AddRange
                (
                    new string[]
                    { 
                        Data[1],
                        Data[2],
                        Data[3],
                    }
                );
            }
        }
    

    Any ideas?