2012-02-15 12 views
7

tengo una tarea fusión de imágenes que podría tomar mucho tiempo, así que corro como una tarea separada como esto¿Cómo abordar la conversión de matriz covariante?

var result = openFileDialog.ShowDialog(); 
BeginInvoke(new Action<string[]>(StitchTask), openFileDialog.FileNames); 

private void StitchTask(string[] fileNames) 
{ 
    // this task could take a lot of time 
} 

¿Es necesario que preocuparse acerca de la advertencia de conversión gama co-variante de abajo o estoy haciendo ¿algo mal?

Co-variante matriz de conversión de cadena [] para Object [] puede causar excepción de tiempo de ejecución en la operación de escritura

+1

¿Qué te está dando esa advertencia? No veo nada usando un 'object []' ... –

+0

ReSharper está dando la advertencia. – jacknad

Respuesta

13

¡Gracias - el problema es que estás pasando un string[] como si se tratara de una gama de argumentos para el delegado, cuando en realidad lo quiere como un argumento sencillo :

BeginInvoke(new Action<string[]>(StitchTask), 
      new object[] { openFileDialog.FileNames }); 

Lo que usted está dando el aviso le advierte acerca de la conversión implícita de string[] a object[], lo cual es razonable porque algo de tomar un parámetro object[]podría tratar de escribir:

array[0] = new object(); 

En este caso, que no es el problema ... pero el hecho de que intente asignar cada cadena a un parámetro de delegado separado es un problema.

Cuestiones relacionadas