DllImport和实例化

本文关键字:实例化 DllImport | 更新日期: 2023-09-27 18:20:58

我是c#的新手,如果你能帮我解决问题,我愿意当学徒。

我有一个未托管的dll,我编写了下面的包装类来访问它的成员。

unsafe public class EpaNet:IDisposable
    {
        public void Dispose()
        {
            Dispose(true);
            GC.SuppressFinalize(this);
        }
        protected virtual void Dispose(bool disposing)
        {
            EpaNet.ENclose();
        }
        [DllImport("epanet2.dll")]
        public static extern int ENepanet(string Inputfile, string ReportFile, string OutputFile,byte[] N );
        [DllImport("epanet2.dll")]
        public static extern int ENopen(string Inputfile, string Reportfile, string Outputfile);
        some other functions ....
}

为了使用这个类,我只写

EpaNet.ENopen(...)

这将使我能够访问dll成员。当我在单线程中运行代码时,这个包装器工作得很好。当我想让这个dll的多个实例以并行模式运行时,问题就开始了。由于所有成员都是静态的,因此在顺序模式下,我不需要实例化,但对于并行模式,我必须有这个类的各种实例,每个实例都使用单独的数据文件,我不知道如何做到这一点

所以问题是如何创建EpaNet类的各种实例?

问候,

e

DllImport和实例化

我认为问题是加载DLL(C#/.NET)的多个实例的重复

尝试从内存加载epanet2.dll。Github上有它的代码:https://github.com/fancycode/MemoryModule