在c#exe和c ++ dll之间使用Mutex

时间:2010-02-18 09:17:28

标签: c# c++ sqlite mutex

是否可以将Mutex对象用于用户c ++ dll进行后台工作的应用程序和c#来显示它。 Bot这些使用共同的资源,即db。因此可以使用Mutex来锁定此资源。在我的db c ++中将插入到db并且c#将读取它。

4 个答案:

答案 0 :(得分:3)

有一个名为“named mutex”的东西,它是OS对象,可以在不同的库和应用程序之间共享,只需在创建/使用时指定其名称。
请参阅http://msdn.microsoft.com/en-us/library/ms682411%28VS.85%29.aspx

答案 1 :(得分:1)

您应该锁定数据库而不是使用互斥锁,因为其他应用程序可能会访问同一资源。即使你知道它只是你的dll和应用程序当前访问资源,有人可以编写一个应用程序来访问相同的资源并破坏该方案。

查看SQLite PRAGMA(locking_mode和synchronous)。

答案 2 :(得分:1)

您必须在System.Threading命名空间中的C#中使用此构造函数:

  

公共互斥(       bool最初出现了,       字符串名称,       out bool createdNew   )

C部分包含在其他答案中 - 因此不需要Interop / PInvoke。

答案 3 :(得分:0)