hBifTs

山自高兮水自深!當塵霧消散,唯事實留傳.荣辱不惊, 看庭前花开花落; 去留随意, 望天上云展云舒.

导航

.NET中使用Mapping File 的API :)

Posted on 2004-07-05 23:32  hbiftsaa  阅读(3248)  评论(7编辑  收藏  举报

在.NET中,进行程序间通信,可以使用的方法很多,比如.NET Remoting,WebService.等等..
但是使用上述方法太过于麻烦.不是很轻便..

在Win32中,一般要完成上述功能,方法也很多,一个比较通用的方法就是直接使用内存映射文件.Mapping File.
.NET FX1.0提供了P/Invoke,可能通过这个来直接调用Win32的API.这里我来演示一下这个方法.

要使用P/Invoke,我们得加入这个命名空间: System.Runtime.InteropServices
然后使用DllImportAttribute来导入我们所要用的Win32 API:

        DllImport

由于原始的API使用到了多个Enum,我们也实现这些个Enum,以方便以后的使用.
    Mapping File Enum Info

接下来,就是把这些函数进行封装了:)
这里,我把这些函数封装到一个Class中,其Class的定义如下:
    SharedMemory

注意: 加入上述DllImport函数.

通过这个方法,我们就可以直接使用MappingFile了.
示例代码如下:
public void Test(){
    SharedMemory sm 
= new SharedMemory();
    sm.Create(
1024,"hbifts");
    sm.CopyFrom(
"hoho.i love cnblogs");
    SharedMemory sm1 
= new SharedMemory();
    sm1.Open(
1024,"hbifts");
    Console.WriteLine(sm1.CopyToString());
    }

到现在为止,关于Win32的MappingFile API就已封装好了~
我们可以直接在.NET应用程序中使用了:)

下载 : SharedMemory

注: 此代码参考于Gotdotnet上面的一个朋友的文章.