C#线程问题

发布于 2024-11-05 20:34:31 字数 175 浏览 2 评论 0原文

是否有一些关于在调用非托管代码时使用多线程的一般建议?

我随机收到访问冲突错误,显然深入研究该非托管代码没有多大意义。

我是否可以尝试一些方法,而不是将这些调用放入某种关键部分来消除违规错误?

Are there some general advice about using multithreading when calling unmanaged code?

I randomly receive access violation errors and obviously digging into that unmanaged code doesn't make much sense.

Are there some approaches I could try instead of putting these calls into some sort of a critical section to remove violation errors?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

复古式 2024-11-12 20:34:31

这取决于您调用的非托管组件是否是线程安全的。

如果您仅在并行调用此代码时遇到访问冲突,那么您使用的组件似乎不是线程安全的。

使用 C# lock() 语句确保其安全:

private static readonly myLockObject = new object();

...

lock (myLockObject)
{
   CallMyUnsafeCode();
}

It depends on whether the unmanaged component you are calling is programmed threadsafe or not.

If you are getting access violations only when calling this code in parallel it looks like the component you are using is not threadsafe.

Use the C# lock() statement to make it secure:

private static readonly myLockObject = new object();

...

lock (myLockObject)
{
   CallMyUnsafeCode();
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文