シンプルなバックグラウンド キャッシュ アップデータ メソッドがあります。
void StartBackgroundLookup( string username )
{
Action action = () =>
{
(...)//A 'lengthy' lookup here
Cache.Set(key, xxx, cachePolicy);
};
Task.Factory.StartNew(action).ContinueWith(task => MyErrorHandler(task.Exception), TaskContinuationOptions.OnlyOnFaulted);
}
エラー ハンドラーは非静的なプライベート メソッドです。
private void MyErrorHandler(Exception error)
{
//msg logged here
}
StartBackgroundLookup がメソッドであるオブジェクトは、スコープ外になってもタスクが終了するまでファイナライズされないという私の理解は正しいですか (キャッシュがラムダで使用され、インスタンス MyErrorHandler が ContinueWith で使用される理由)?
それが使い捨てオブジェクトで、dispose が呼び出された場合はどうなりますか?