gpt4 book ai didi

uwp - 在 UWP 和桌面应用程序之间共享命名互斥锁

转载 作者:行者123 更新时间:2023-12-04 11:37:19 28 4
gpt4 key购买 nike

有没有办法在同一个包中的 UWP 应用程序和桌面桥应用程序之间共享互斥锁?它们似乎有不同的命名空间;使用相同的名称不会在进程之间产生相同的对象。根据 WinObj,UWP 应用程序的对象是,存储在 AppContainerNamedObjects\{APP_SID} 下的特殊命名空间中而不是下BaseNamedObjects像往常一样。然而,桌面应用程序 - 尽管从同一个应用程序包运行 - 确实使用 BaseNamedObjects命名空间,因此两个进程不能共享同步对象。

有没有办法解决?我想到的最好的事情涉及检查文件是否存在等愚蠢的事情,但这既过于复杂又表现不佳。互斥体简单、快速,专为这个用例而设计(跨进程同步);它们不能在这里使用吗?

最佳答案

您可以在 UWP 和桌面之间共享互斥锁,但我不知道这是否是一种黑客行为。我知道,我刚试过。在 C++ 方面,您调用 CreateMutex,然后(以某种方式)通过进程间通信获知 UWP 应用程序的 PID。然后,您在您创建的互斥锁上使用 SYNCHRONIZE 访问调用 DuplicateHandle。然后,您将这些句柄 ID 传递给现在拥有互斥锁并可以等待它的 UWP 应用程序。在 UWP 应用程序中,您需要创建互斥锁,然后使用传递给它的互斥锁 ID 对其调用 SetSafeWaitHandle()。这是hacky,但它似乎工作。我想不通的是为什么它不适用于 AutoResetEvents。疯狂的。

关于uwp - 在 UWP 和桌面应用程序之间共享命名互斥锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46186350/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com