public PublicFolderSession GetPublicFolderSession(Guid publicFolderMailboxGuid) { PublicFolderSession result; using (this.CheckDisposed("GetPublicFolderSession")) { ExTraceGlobals.SessionTracer.TraceDebug((long)this.GetHashCode(), "PublicFolderSessionCache.GetPublicFolderContentSession called"); if (publicFolderMailboxGuid == PublicFolderSession.HierarchyMailboxGuidAlias) { publicFolderMailboxGuid = this.GetHierarchyMailboxGuidForUser(); } PublicFolderSession publicFolderSession; if (this.openedSessions.TryGetValue(publicFolderMailboxGuid, out publicFolderSession)) { result = publicFolderSession; } else { lock (this.lockObject) { if (this.openedSessions.TryGetValue(publicFolderMailboxGuid, out publicFolderSession)) { return(publicFolderSession); } if (this.openSessionAsAdmin) { publicFolderSession = PublicFolderSession.OpenAsAdmin(this.organizationId, this.connectAsPrincipal, publicFolderMailboxGuid, (this.clientSecurityContext == null) ? null : new WindowsPrincipal(this.clientSecurityContext.Identity), this.cultureInfo, this.clientInfoString, this.budget); } else { publicFolderSession = PublicFolderSession.Open(this.connectAsPrincipal, publicFolderMailboxGuid, this.clientSecurityContext, this.cultureInfo, this.clientInfoString); publicFolderSession.AccountingObject = this.budget; } if (this.timeZone != null) { publicFolderSession.ExTimeZone = this.timeZone; } if (this.firstPublicFolderSession == null) { this.firstPublicFolderSession = publicFolderSession; } this.openedSessions.Add(publicFolderSession.MailboxGuid, publicFolderSession); } result = publicFolderSession; } } return(result); }