Got this - the problem is that you pass string[] , as if it were an array of arguments for the delegate, when you really want it to be the only argument:
BeginInvoke(new Action<string[]>(StitchTask), new object[] { openFileDialog.FileNames });
Everything that gives you a warning warns you of implicitly converting string[] to object[] , which is reasonable because something taking an object[] parameter might try to write:
array[0] = new object();
In this case, this is not a problem ... but the problem associated with trying to map each line to a separate delegation parameter is the problem.
Jon skeet
source share