PopulateTable(DataTable filterTable, TableDef contextTableDef)
{
string friendlyFieldName = "";
string friendlyTableName = "";
string friendlyFullName = "";
try
{
*For loop commented*
//foreach (FieldDef field in contextTableDef.Fields) {
//friendlyTableName = contextTableDef.Description;
//friendlyFieldName = field.FriendlyName;
//friendlyFullName = friendlyTableName + "." + friendlyFieldName;
//if (!field.CurrentView.TimeField) {
//filterTable.Rows.Add(contextTableDef.Name, friendlyFullName, //contextTableDef.Name, field.Name, friendlyFieldName, friendlyTableName);
//}
Parallel.ForEach(contextTableDef.Fields, (field) =>
{
friendlyTableName = contextTableDef.Description;
friendlyFieldName = field.FriendlyName;
friendlyFullName = friendlyTableName + "." + friendlyFieldName;
if (!field.CurrentView.TimeField) {
filterTable.Rows.Add(contextTableDef.Name, friendlyFullName, contextTableDef.Name, field.Name, friendlyFieldName, friendlyTableName);
}
});
foreach (TableDef childTable in contextTableDef.Children) {
if (childTable.IsOneToOne) {
PopulateFilterTable(filterTable, childTable);
}
}
return filterTable;
} catch (Exception ex) {
throw;
}
}
Used here Parallel.Foreach instead of for loop to increase performance.Here in code i used custom collection TableDef,FiledDef. When i run the code and observed that the loop completed but the application is hanged not able recognized why is it so.