本文整理汇总了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);
}
}
示例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);
}
}