我需要从.NET Web服务(asmx或WCF)调用dll(非托管c)。

从Web服务调用dll很简单,并按预期工作。

但是,当我加载测试Web服务时出现问题。 (错误代码0xC0000374 - “内部错误,通常涉及堆损坏”)。

我已经被dll的所有者告知,如果同时发送2个或更多呼叫,则dll在多线程环境中不可靠。

在传统的Windows应用程序中,我通过实现单例类来保护dll来处理这个问题。 是否有推荐的方法在Web服务实现中实现此目的?

===============>>#1 票数:3 已采纳

如果你只需要确保一次只有一个线程可以调用你的dll,你可以在lock语句中包含对它的任何访问:

public static class MyDllCalls
{
    private static object _lockObject = new object();

    public static int SomeCall()
    {
        lock (_lockObject)
        {
            return CallSomeFunctionInYourDll();
        }
    }
}

只有一个线程可以在给定时间保持锁定,因此这样可以防止多个线程并行进行调用。

===============>>#2 票数:0

为防止多个线程并行调用相同的方法,您可以使用锁定机制

  ask by JohnC translate from so

未解决问题?本站智能推荐: