Task throwing exception
I am new for TAsk based programming.
I have parent Task which is calling other function which throw "An item
with the same key has already been added."
contacts = new List<Contact>();
List<Task> tasks = new List<Task>();
foreach (var dbContact in dbContacts)
{
Task task = Task.Factory.StartNew(() =>
{
var dbcontact = dbContact;
var address = dbcontact.dbContactAddresses.Where(a =>
a.IsPrimary == true).ToAddresses(false).ToList();
contacts.Add(new Contact()
{
ContactId = dbcontact.ContactId,
Addresses = address,
});
});
tasks.Add(task);
}
Task.WaitAll(tasks.ToArray());
ToAddress extention function
public static List<Address> ToAddresses(this IEnumerable<dbContactAddress>
dbContactAddresses, Boolean WithContactAddressAssociations = true)
{
List<Address> addresses = new List<Address>();
foreach (dbContactAddress dbAddress in dbContactAddresses)
{
if (addresses == null) { addresses = new List<Address>(); }
Address address =
dbAddress.ToAddress(WithContactAddressAssociations);
if (address != null)
{
addresses.Add(address);
}
}
return addresses;
}
So i am getting error on foreach "An item with the same key has already
been added."
Am i doing anything wrong?
StackTrace:
at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value,
Boolean add)
at System.Data.Linq.DataContext.GetTable(MetaTable metaTable)
at
System.Data.Linq.CommonDataServices.GetDataMemberQuery(MetaDataMember
member, Expression[] keyValues)
at
System.Data.Linq.CommonDataServices.DeferredSourceFactory`1.ExecuteKeyQuery(Object[]
keyValues)
at
System.Data.Linq.CommonDataServices.DeferredSourceFactory`1.Execute(Object
instance)
at System.Data.Linq.EntitySet`1.Load()
at System.Data.Linq.EntitySet`1.GetEnumerator()
at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
at Aurora.Customers.Data.Translations.ToAddresses(IEnumerable`1
dbContactAddresses, Boolean WithContactAddressAssociations) in
C:\Avant\Repos\Code\Aurora\Customer
Management\Data\Translations.cs:line 508
at
Aurora.Customers.Data.ContactManager.<>c__DisplayClass24.<GetContactsByContainsSearch>b__1a()
in C:\Avant\Repos\Code\Aurora\Customer
Management\Data\ContactManager.cs:line 317
at System.Threading.Tasks.Task.Execute()
No comments:
Post a Comment