当前位置: 首页>>代码示例>>C#>>正文


C# MutexSecurity.SetAccessRule方法代码示例

本文整理汇总了C#中System.Security.AccessControl.MutexSecurity.SetAccessRule方法的典型用法代码示例。如果您正苦于以下问题:C# MutexSecurity.SetAccessRule方法的具体用法?C# MutexSecurity.SetAccessRule怎么用?C# MutexSecurity.SetAccessRule使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在System.Security.AccessControl.MutexSecurity的用法示例。


在下文中一共展示了MutexSecurity.SetAccessRule方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: CleanUpMessages

        private static void CleanUpMessages(object state)
        {
            var directory = (DirectoryInfo) state;

            bool createdNew;
            var mutexName = string.Concat(MutexCleanUpKey, ".", directory.Name);
            var accessControl = new MutexSecurity();
            var sid = new SecurityIdentifier(WellKnownSidType.AuthenticatedUserSid, null);
            accessControl.SetAccessRule(new MutexAccessRule(sid, MutexRights.FullControl, AccessControlType.Allow));
            using (var mutex = new Mutex(true, mutexName, out createdNew, accessControl))
            {
                if (createdNew)
                {
                    try
                    {
                        Thread.Sleep(FileTimeoutMilliseconds);
                    }
                    catch (ThreadInterruptedException)
                    {
                    }
                    CleanUpMessages(directory);
                    mutex.ReleaseMutex();
                }
            }
            if (createdNew)
            {
                ThreadPool.QueueUserWorkItem(CleanUpMessages, directory);
            }
        }
开发者ID:TheCodeKing,项目名称:XDMessaging.Net,代码行数:29,代码来源:XDIOStreamBroadcaster.cs

示例2: CleanUpMessages

        /// <summary>
        /// 	This method is called within a seperate thread and deletes messages that are older than
        /// 	the pre-defined expiry time.
        /// </summary>
        /// <param name = "state"></param>
        private static void CleanUpMessages(object state)
        {
            var directory = (DirectoryInfo) state;

            // use a mutex to ensure only one listener system wide is running
            bool createdNew;
            string mutexName = string.Concat(mutexCleanUpKey, ".", directory.Name);
            var accessControl = new MutexSecurity();
            var sid = new SecurityIdentifier(WellKnownSidType.AuthenticatedUserSid, null);
            accessControl.SetAccessRule(new MutexAccessRule(sid, MutexRights.FullControl, AccessControlType.Allow));
            using (var mutex = new Mutex(true, mutexName, out createdNew, accessControl))
            {
                // we this thread owns the Mutex then clean up otherwise exit.
                if (createdNew)
                {
                    // wait for the specified timeout before attempting to clean directory
                    try
                    {
                        Thread.Sleep(fileTimeoutMilliseconds);
                    }
                    catch (ThreadInterruptedException)
                    {
                    }
                    CleanUpMessages(directory);
                    // release the mutex
                    mutex.ReleaseMutex();
                }
            }
            if (createdNew)
            {
                // after mutex release add an additional thread for cleanup in case we're the last out
                // and there are now additional files to clean
                ThreadPool.QueueUserWorkItem(CleanUpMessages, directory);
            }
        }
开发者ID:SmartFire,项目名称:XDMessaging.Net,代码行数:40,代码来源:XDIoStreamBroadcaster.cs


注:本文中的System.Security.AccessControl.MutexSecurity.SetAccessRule方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。