Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 避免对服务器中的代码段进行并发访问_C#_Multithreading_Wcf_Parallel Processing - Fatal编程技术网

C# 避免对服务器中的代码段进行并发访问

C# 避免对服务器中的代码段进行并发访问,c#,multithreading,wcf,parallel-processing,C#,Multithreading,Wcf,Parallel Processing,我希望避免服务器端业务逻辑中的一段代码可以并发访问。 我的商务课不是静态的。服务层是在wcf中实现的。有什么建议吗?您需要使用某种同步机制。最简单的说法是: class BusinessLogic { // To avoid the possibility of a deadlock, prevent external code from // ever acquiring this lock by making the lock target private. priv

我希望避免服务器端业务逻辑中的一段代码可以并发访问。
我的商务课不是静态的。服务层是在wcf中实现的。有什么建议吗?

您需要使用某种同步机制。最简单的说法是:

class BusinessLogic
{
    // To avoid the possibility of a deadlock, prevent external code from
    // ever acquiring this lock by making the lock target private.
    private readonly object lockTarget = new object();

    void Foo()
    {
        lock(lockTarget)
        {
            // your code here
        }
    }
}

当然,线程同步通常是一个复杂的主题,只有在考虑了特定的上下文之后才能找到正确或最佳的解决方案。名称空间中还有其他同步原语,您也应该知道。

问题需要进行一些编辑,以清楚地提到您要限制并发访问的业务逻辑在哪里,它是wcf端的一部分吗

另外,到目前为止,您已经为wcf配置了哪种并发模式

我假设您想要控制访问的代码是wcf端的一部分,根据这个假设,因为您的类不是静态的,所以限制并发访问的唯一方法是通过.net中提供的各种锁定机制

检查C#中的锁定,看看哪一个最适合您的锁定需要(您需要多大的线程安全性)

也可以查看此讨论,它将为您提供一些基本需要的指导:

您没有提供足够的信息,我们只能给出模糊的建议。