2012-04-04 4 views
1

Booksleeve 1.1.0.6 (최신 너겟 패키지)을 사용하고 있습니다.Booksleeve로 RedisConnection을 저장하기 위해 싱글 톤을 사용하는 방법은 무엇입니까?

내가 그렇게 내가 싱글에 저장하고있어 내 모든 웹 응용 프로그램에 대한 단일 연결을 사용하려면 : BookSleeve 테스트에 사용

public static RedisConnection Conn = RedisConfig.GetUnsecuredConnection(waitForOpen: true); 

RedisConfig.GetUnsecuredConnection 방법은 동일합니다. I가 동작을 수행 할 때

는 I는 InvalidOperationException이 얻을 : 큐가 닫혀 예외 :

[InvalidOperationException이 : 큐가 닫혀] BookSleeve.MessageQueue.Enqueue (RedisMessage 항목 부울 highPri C : \ Dev \ BookSleeve \ BookSleeve \ RedirectConnectionBase.cs의 BookSleeve.RedisConnectionBase.ExecuteVoid (RedisMessage 메시지, 부울 queueJump) : 794 ASP.welisten_booksleevetests_aspx.SaveDictionaryToRedis의 C : \ Dev \ BookSleeve \ BookSleeve \ (사전 2 사전) +173 ASP.welisten_bo oksleevetests_aspx.Page_Load (Object sender, EventArgs e) +67 System.Web.Util.CalliHelper.EventArgFunctionCaller (IntPtr fp, Object o, Object t, EventArgs e) +25 System.Web.UI.Control.LoadRecursive() + 71 System.Web.UI.Page.ProcessRequestMain (부울 includeStagesBeforeAsyncPoint 부울 includeStagesAfterAsyncPoint)은 3,064

I가 참과 거짓으로 설정 waitForOpen 파라미터와이 시도 여기

는 코드 실행하려고합니다.

연결을 열고 다양한 악수를 수행합니다

theConnection.Open(); 

:

private void SaveDictionaryToRedis(Dictionary<string, string> dictionary) 
    { 
     using (Mp.Step("Saving Data to Redis")) 
     { 
      using (RedisConfig.Conn) 
      { 
       RedisConfig.Conn.Strings.Set(DB, dictionary); 

      } 
     } 
    } 

답변

1

복사 된 내용에 따라, 그것은에 누락 된 호출이 있다는 것을있을 수 있습니다. 싱글 톤의 경우에는 초기화가 진행되는 동안 합리적 일 것입니다.

그러나! 아마도 여기의 문제는 두 번째 예가 잘못되었다는 것입니다. Conn이 설명 된대로 싱글 톤이면 해당 코드에 속하지 않으므로 using을 사용하지 않아야합니다. 즉 한 번만 사용할 수 있으며 모든 후속 액세스는 실패합니다. 그냥 연결에 액세스하십시오. 여기서는 using이 없습니다.

관련 문제