コード例 #1
0
        private static MapiStream OpenAndLockStream(MapiFolder oofHistoryFolder, byte[] initialBytes, long hashCode, out bool isNew)
        {
            MapiStream mapiStream = null;

            isNew = false;
            OpenPropertyFlags openPropertyFlags = OpenPropertyFlags.Modify | OpenPropertyFlags.DeferredErrors;

            try
            {
                mapiStream = oofHistoryFolder.OpenStream(PropTag.OofHistory, openPropertyFlags);
                OofHistory.LockStreamWithRetry(mapiStream, hashCode);
            }
            catch (MapiExceptionNotFound)
            {
                if (mapiStream != null)
                {
                    mapiStream.Dispose();
                    mapiStream = null;
                }
                OofHistory.Tracer.TraceDebug(hashCode, "OOF history property does not exist, trying to open with create flag.");
                openPropertyFlags |= OpenPropertyFlags.Create;
                mapiStream         = oofHistoryFolder.OpenStream(PropTag.OofHistory, openPropertyFlags);
                OofHistory.LockStreamWithRetry(mapiStream, hashCode);
                OofHistory.ResetOofHistoryProperty(mapiStream, initialBytes, hashCode);
                isNew = true;
            }
            return(mapiStream);
        }