>在WPF应用程序中实现单个现实行为
本指南说明了如何构建WPF应用程序,该应用程序仅允许一个实例同时运行。 这是使用静音的。
了解静音
互斥s(相互排除)是同步原始。 它确保只有一个过程才能在任何给定时刻访问共享资源。在WPF中,我们利用互斥符防止多个应用程序实例同时运行。
>实现详细信息
使用名为sutexes:
首选方法涉及在您的应用程序的主要入口处创建命名的sutex:
命名的静音启用跨多个过程和线程启用同步。
>
1 2 3 4 5 | static class Program
{
static Mutex mutex = new Mutex(true, "{8F6F0AC4-B9A1-45fd-A8CF-72F04E6BDE8F}" );
}
|
登录后复制
获取互斥X:
要确定是否已经运行了另一个实例,我们使用>>
WaitOne
>可选:通知现有实例:
>
1 2 3 4 5 6 7 8 9 10 11 | if (mutex.WaitOne(TimeSpan.Zero, true))
{
Application.Run( new MainWindow());
mutex.ReleaseMutex();
}
else
{
MessageBox.Show( "An instance is already running." );
}
|
登录后复制
>对于增强的用户体验,您可以在尝试新启动时通知运行实例。这是使用> 完成的
>处理自定义win32消息:PostMessage
>
1 2 3 4 5 6 7 8 | if (!mutex.WaitOne(TimeSpan.Zero, true))
{
NativeMethods.PostMessage(
(IntPtr)NativeMethods.HWND_BROADCAST,
NativeMethods.WM_SHOWME,
IntPtr.Zero,
IntPtr.Zero);
}
|
登录后复制
在主窗口中,覆盖聆听自定义消息,并将现有窗口带到前景:>
这种全面的方法确保了强大的单位wpf应用程序,从而阻止多个实例同时运行。 请记住要包含必要的
定义(此处未显示为简洁)。>以上是如何仅确保WPF应用程序的一个实例一次运行?的详细内容。更多信息请关注PHP中文网其他相关文章!