I suspect this line is throwing an exception:
//here is what seems to cause the issue....
string paramsList = String.Format("Calling process containing IEnumerable extension method - These parameters will be used: {0}", String.Join(", ", BuildParameters.Select(t => t.ToString())));
Wrap that in a try/catch and output the exception information:
string paramsList;
try
{
string parms = string.Join(", ", BuildParameters.Select(t => t.ToString())));
paramsList = String.Format(
"Calling process containing IEnumerable extension method - These parameters will be used: {0}",
parms);
Console.WriteLine(paramsList);
}
catch (Exception ex)
{
Console.WriteLine("Exception!");
Console.WriteLine(ex.ToString());
}
Or you could wrap your entire thread proc in that. Be careful, though. You shouldn't blindly catch all exceptions like this in production code. It's nice for debugging, but don't leave it in the production code.