下面两段代码有什么区别?使用第二个会有什么问题吗?
场景一:
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。异常对象的线程编组是如何发生的?会不会有什么问题?如果有的话,这样做有什么限制?最大的优势是您可以非常轻松地传入任意数量的参数。