DllImport和Instantiation

时间:2013-07-04 18:19:26

标签: c# interop dllimport instantiation

我是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类实例?

此致

ë

1 个答案:

答案 0 :(得分:0)

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

重复

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