本文整理汇总了C#中Microsoft.Win32.SafeHandles.SafeWaitHandle.SafeWaitHandle构造函数的典型用法代码示例。如果您正苦于以下问题:C# SafeWaitHandle构造函数的具体用法?C# SafeWaitHandle怎么用?C# SafeWaitHandle使用的例子?那么, 这里精选的构造函数代码示例或许可以为您提供帮助。您也可以进一步了解该构造函数所在类Microsoft.Win32.SafeHandles.SafeWaitHandle
的用法示例。
在下文中一共展示了SafeWaitHandle构造函数的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Main
//引入命名空间
using System;
using Microsoft.Win32.SafeHandles;
using System.Runtime.InteropServices;
class SafeHandlesExample
{
static void Main()
{
UnmanagedMutex uMutex = new UnmanagedMutex("YourCompanyName_SafeHandlesExample_MUTEX");
try
{
uMutex.Create();
Console.WriteLine("Mutex created. Press Enter to release it.");
Console.ReadLine();
}
catch (Exception e)
{
Console.WriteLine(e);
}
finally
{
uMutex.Release();
Console.WriteLine("Mutex Released.");
}
Console.ReadLine();
}
}
class UnmanagedMutex
{
// Use interop to call the CreateMutex function.
// For more information about CreateMutex,
// see the unmanaged MSDN reference library.
[DllImport("kernel32.dll", CharSet = CharSet.Unicode)]
static extern IntPtr CreateMutex(IntPtr lpMutexAttributes, bool bInitialOwner,
string lpName);
[DllImport("kernel32.dll")]
public static extern bool ReleaseMutex(SafeWaitHandle hMutex);
private SafeWaitHandle handleValue = null;
private IntPtr mutexAttrValue = IntPtr.Zero;
private string nameValue = null;
public UnmanagedMutex(string Name)
{
nameValue = Name;
}
public void Create()
{
if (nameValue == null && nameValue.Length == 0)
{
throw new ArgumentNullException("nameValue");
}
IntPtr ptr = CreateMutex(mutexAttrValue,
true, nameValue);
handleValue = new SafeWaitHandle(ptr, true);
// If the handle is invalid,
// get the last Win32 error
// and throw a Win32Exception.
if (handleValue.IsInvalid)
{
Marshal.ThrowExceptionForHR(Marshal.GetHRForLastWin32Error());
}
}
public SafeWaitHandle Handle
{
get
{
// If the handle is valid,
// return it.
if (!handleValue.IsInvalid)
{
return handleValue;
}
else
{
return null;
}
}
}
public string Name
{
get
{
return nameValue;
}
}
public void Release()
{
ReleaseMutex(handleValue);
}
}