转自:http://blog.csdn.net/jiajiayouba/article/details/9138957
public static class SingleInstance
{
public static EventWaitHandle ProgramStarted { get; set; }
public static bool IsContinue()
{
bool createNew;
ProgramStarted = new EventWaitHandle(false, EventResetMode.AutoReset, Application.ProductName, out createNew);
if (!createNew)
{
ProgramStarted.Set();
}
return createNew;
}
public static void SetCallback(WaitOrTimerCallback callback, object state)
{
ThreadPool.RegisterWaitForSingleObject(ProgramStarted, callback, state, -1, false);
}
}