2015-11-17 14 views
5

ログインしたスタックトレースにステップがありません。スタックトレースに手順がないのはなぜですか?

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

なぜ(Addステップを逃す)StartLoadingResourcesからInsertにまっすぐ行ってスタックトレースを持っていますか?

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()<--- 

コードがないままビルドオプションで「コードの最適化」で、デバッグとしてコンパイルされます。

+0

デバッグオプションで[モジュールロード時にJIT最適化を抑制]がオンになっていることを確認してください。 – leppie

答えて

1

Dictionary<TKey, TValue>Addメソッドは、1行のメソッドであるため、Insertを呼び出します。コンパイラは、最適化が有効になっていなくても簡単にそのメソッド呼び出しをインライン展開します。

関連する問題