2012-02-15 10 views
7

Ho un compito cuciture un'immagine che potrebbe prendere un sacco di tempo in modo corro come un compito separato come questoCome indirizzare la conversione dell'array co-variant?

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

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

Ho bisogno di preoccuparsi per l'avviso di conversione serie co-variante sotto o sto facendo Qualcosa non va?

Co-variante di conversione matrice da string [] di opporsi [] può causare di eccezione di runtime su un'operazione di scrittura

+1

Cosa ti sta dando questo avviso? Non vedo nulla usando un 'oggetto []' ... –

+0

ReSharper sta dando l'avviso. – jacknad

risposta

13

Got it - il problema è che si sta passando un string[] come se fosse un serie di argomenti per il delegato, quando si vuole realmente come argomento singolo:

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

Qualunque cosa si sta dando l'avviso che si sta avvertendo la conversione implicita di string[]-object[], che è ragionevole, perché qualcosa di prendere un parametro object[]potrebbe provare a scrivere:

array[0] = new object(); 

In questo caso, che non è il problema ... ma il fatto che cercherebbe di associare ogni stringa a un parametro delegato separato è un problema.

Problemi correlati