C# 如何将win32 API与C结合使用#
如何将win32连接到C#并使用win32函数创建信号量、互斥量等。您不需要使用win32 API来使用互斥量或信号量。他们已经为此内置了.NET类,并且从互斥1.1版和信号量2.0版开始:C# 如何将win32 API与C结合使用#,c#,multithreading,winapi,mutex,semaphore,C#,Multithreading,Winapi,Mutex,Semaphore,如何将win32连接到C#并使用win32函数创建信号量、互斥量等。您不需要使用win32 API来使用互斥量或信号量。他们已经为此内置了.NET类,并且从互斥1.1版和信号量2.0版开始: 一些.NET内部代码显示互斥类实际上使用Win32 API:作为一个快速示例,下面的代码是.NET中Threading.Mutex类的OpenMutex和ReleaseMutex方法的反编译源代码。它使用DllImport属性和extern关键字来访问kernel32.dll中的函数 [DllImp
[DllImport("kernel32.dll", CharSet=CharSet.Auto, SetLastError=true)]
internal static extern SafeWaitHandle OpenMutex(int desiredAccess, bool inheritHandle, string name);
[DllImport("kernel32.dll", CharSet=CharSet.None)]
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
internal static extern bool ReleaseMutex(SafeWaitHandle handle);
我想你可以用这些片段来进行探索,在这个方便的网站上可以找到更多的信息:C#提供了自己的方法来做这些事情。你不应该混合使用Win32和C#,而且绝对不建议这样做,因为.NET注定要取代Win32
MSDN在()上有一个示例
如果您仍然希望使用.NET和Win32,则必须使用具有CLI功能的C++。< /P>我的任务是用Mutexes和SimaPrEES任务执行Win32和任何编程语言的编写程序。我懂Java,但很难将win32和Java结合起来。我认为C++更接近java,更容易学习C语言而不是C++。所以我想知道如何编译win32和c#你有没有检查过Java JNI?(Java本机接口)这可能是一种更好的方法。。。NET类实际上是Win32函数的包装器。使用这些对象比直接使用Win32 API简单得多。值得吗?我认为C#更接近win32,使用JNI和win32检查我最近对DllImport和extern的编辑是愚蠢的。还可以查看此站点:我尝试使用System.Runtime.InteropServices;和[DllImport(“kernel32.dll”,SetLastError=true)],但我不知道这是对的