C# 如何制作C++;适用于C和C++;在温特

C# 如何制作C++;适用于C和C++;在温特,c#,c++,multithreading,windows-runtime,C#,C++,Multithreading,Windows Runtime,我正在制作一个具有C++/CX WinRT核心库和C#/XAML应用层的程序。我需要制作一些互斥/MaxalLySt/Cub()来防止多个线程在C++库中定义的类的一些资源上产生典型的多线程疯狂。 注意,C++和C的两个边都可以访问需要锁定的资源,所以我需要一些既适用于两者的接口。 我用(WrRTDirectX示例)开始的C++代码使用了MaxalLyFipe,但是这不能直接导出,也不能使用SCOMPEDE锁,因为它们不是WrRT兼容的(即REF和密封)< /P> 我制作了一个简单的C++/CX

我正在制作一个具有C++/CX WinRT核心库和C#/XAML应用层的程序。我需要制作一些互斥/MaxalLySt/Cub()来防止多个线程在C++库中定义的类的一些资源上产生典型的多线程疯狂。

注意,C++和C的两个边都可以访问需要锁定的资源,所以我需要一些既适用于两者的接口。

我用(WrRTDirectX示例)开始的C++代码使用了MaxalLyFipe,但是这不能直接导出,也不能使用SCOMPEDE锁,因为它们不是WrRT兼容的(即REF和密封)< /P> 我制作了一个简单的C++/CX类,它的工作方式类似于作用域锁定(即在构造函数中锁定,在析构函数中解锁),但考虑到在C#中调用析构函数时的不可预测性,它显然无法工作

我现在所拥有的只是包含资源的类上的手动Lock()和Unlock()方法,然后它对一个关键的_节对象调用Lock()或Unlock(),它可以工作,但它缺乏范围内的_Lock类或C#的Lock关键字的优雅和清晰


<>理想的是我更喜欢使用C++的锁关键字来锁定类(或者锁定类的某个成员),但是我的搜索FU没有告诉我如何设置C++类来锁定同一个对象的例子。< /P>你是否试图在C++中使用IcLoClice?它映射到C#中的using语句,编译器将在作用域块的末尾自动调用Close()方法。它似乎比这更简单。通过在C++对象中声明公共析构函数,使用块的C将调用块的析构函数,使它完全符合我的需要。谢谢你的提示,因为它确实为我指明了正确的方向。