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 に答える