DLLImport を使用するときに同時実行性に問題があります。Web 経由で送信する必要があるレポートを提供する Dll があるので、次のようにします。
[DllImport("Rep.dll", EntryPoint = "PrintRep", CallingConvention = CallingConvention.StdCall,
CharSet = CharSet.Ansi)]
private static extern string PrintRep(several params...);
Dll 側には、レポートと共にパスを返す多くの変数とインスタンスがあります。
私が今持っているコードは PrintRep の呼び出しをロックしていますが、これは機能しますが、明らかに保留中の要求を待機させます。これをロックなしで機能させる方法はありますか? ロックを解除すると、「保護されたメモリに書き込もうとしています」というエラーがいくつか発生し、Dll が最終的にハングするためです。