0

我是 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

4

1 回答 1

0

我认为问题是Loading multiple instance of DLL (C#/.NET)

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

于 2013-08-12T08:53:16.957 回答