2015-11-17 8 views
5

La traccia dello stack registrata sembra mancare un passaggio.Perché il mio stack traccia i passaggi mancanti?

private void StartLoadingResources(DataService separateDataService) 
{ 
    ... 
    batchResource.Resources.Add(key, new List<string>()); 
    // batchResource.Resources is the Dictionary object involved 
    ... 
} 

Perché è l'analisi dello stack andato dritto StartLoadingResources-Insert (manca il passo Add)?

System.AggregateException: One or more errors occurred. ---> System.ArgumentException: An item with the same key has already been added. 
    at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add) 
    at MyApp.Importer.StartLoadingResources(DataService separateDataService) in ****\MyApp\MyApp\Importer.cs:line 313 
    at MyApp.Importer.<Execute>b__5() in ****\MyApp\MyApp\Importer.cs:line 142 
    at System.Threading.Tasks.Task.Execute() 
    --- End of inner exception stack trace --- 
    at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken) 
    at System.Threading.Tasks.Task.Wait() 
    at MyApp.Importer.Execute() in ****\MyApp\MyApp\Importer.cs:line 157 
    at MyApp.Program.Execute() in ****\MyApp\MyApp\Program.cs:line 252 
    at MyApp.Program.Main(String[] args) in ****\MyApp\MyApp\Program.cs:line 47 
---> (Inner Exception #0) System.ArgumentException: An item with the same key has already been added. 
    at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add) 
    at MyApp.Importer.StartLoadingResources(DataService separateDataService) in ****\MyApp\MyApp\Importer.cs:line 313 
    at MyApp.Importer.<Execute>b__5() in ****\MyApp\MyApp\Importer.cs:line 142 
    at System.Threading.Tasks.Task.Execute()<--- 

Il codice viene compilato come Debug, con "ottimizzare il codice" in opzioni di generazione lasciato incontrollato.

+0

Assicurarsi che l'opzione "Ometti ottimizzazione JIT su caricamento modulo" sia selezionata nelle opzioni Debug. – leppie

risposta

1

Procedimento Add su Dictionary<TKey, TValue> chiama semplicemente Insert, dato che si tratta di un metodo 1 riga, il compilatore ha semplicemente inline tale metodo chiamata come è così banale anche senza ottimizzazioni attivate.

Problemi correlati