В чем разница между двумя частями кода ниже? Будут ли какие-либо проблемы с использованием второго?
Сценарий 1:
private void Log(Exception e)
{
ThreadPool.QueueUserWorkItem(new WaitCallback(Log), e);
}
private void Log(object obj)
{
Exception e = (Exception)obj;
Logger.Log(e);
}
Сценарий 2
private void Log(Exception e)
{
ThreadPool.QueueUserWorkItem(
(obj) =>
{
Logger.Log(e);
});
}
В сценарии 2 я не передаю исключение в качестве параметра для ThreadPool. Как происходит сортировка потоков объекта исключения? Будут ли проблемы? Каковы ограничения этого, если они есть? Большим преимуществом является то, что вы можете легко передать любое количество параметров.