以下の2つのコードの違いは何ですか?2番目のものを使用して問題はありますか?
シナリオ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に渡していません。例外オブジェクトのスレッドマーシャリングはどのように発生しますか?問題がありますか?もしあれば、これを行うことの制限は何ですか?大きな利点は、任意の数のパラメーターを非常に簡単に渡すことができることです。