0

hangfire でジョブごとにシングルトン DB コンテキストを使用するために、カスタム ライフタイム プロバイダーを実装しました。以下のコードの問題は、作成されたインスタンスが解放されていないことです。

私の質問は:ReleaseObjectメソッドが呼び出されないのはなぜですか?

public class JobContextLifetimeProvider : TinyIoCContainer.ITinyIoCObjectLifetimeProvider
    {
        private static readonly ConcurrentDictionary<string, object> Locator = new ConcurrentDictionary<string, object>();

        public object GetObject()
        {
            var key = JobContext.JobId;
            return Locator.ContainsKey(key) ? Locator[key] : null;
        }

        public void SetObject(object value)
        {
            var key = JobContext.JobId;
            Locator[key] = value;

            if (value is IDataContext)
            {
                Debug.WriteLine("Created data context {0}", value.GetHashCode());
            }
        }

        public void ReleaseObject()
        {
            var item = GetObject() as IDisposable;

            if (item != null)
            {
                item.Dispose();
                SetObject(null);
            }
        }
    }
4

0 に答える 0