【发布时间】:2021-08-12 10:28:44
【问题描述】:
我有 C++ DLL,它合并图像,我正在从 C# 传递这个 DLL 的参数。
[DllImport("Image.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern int ImageMerge(ref IntPtr ImagesData, ref IntPtr[] ImageParams, ref IntPtr ImageProgress);
在这里,我需要使我的 DLL 线程安全,我不知道该怎么做。有没有有效的方法?
【问题讨论】:
-
你写了dll的代码吗?是否只对传入的数据有效?
-
@RetiredNinja 不,我没有编写 dll 代码。是的,它适用于传递的数据。
-
如果您没有编写 DLL 或无法访问代码,您希望如何使其成为线程安全的?或者你想简单地让它一次只有一个线程可以从 C# 应用程序调用该方法?如果是这样,只需拨打
lock。 -
@Andy 我没有编写 DLL,但我可以访问 DLL 代码,并且在 DLL 内部,创建了一个对象以在合并图像时访问其他方法和属性。
-
如果没有人可以看到它,任何人将如何帮助您使 DLL 代码线程安全?
标签: c# c++ multithreading dll thread-safety