我想避免在我的服务器端业务逻辑中同时访问一段代码。我的商务舱不是静态课程。服务层是在 wcf 中实现的。有什么建议吗?
问问题
126 次
2 回答
4
您需要使用某种同步机制。最简单的lock
语句是:
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
}
}
}
当然线程同步一般来说是一个复杂的话题,只有在考虑特定的上下文之后才能达到正确或最佳的解决方案。System.Threading
您还应该注意命名空间中的其他同步原语。
于 2013-09-11T09:51:31.457 回答
1
问题需要进行一些编辑以清楚地提及您要限制并发访问的业务逻辑在哪里,它是 wcf 方面的一部分吗?
到目前为止,您还为 wcf 配置了哪种 wcf 并发模式?
我假设您想要控制访问的代码是 wcf 方面的一部分,假设您的类不是静态的,那么限制并发访问的唯一方法是通过 .net 中提供的各种锁定机制。
检查 C# 中的锁定,看看哪一个最适合您的锁定需求(您需要多少线程安全性)。
也可以查看这个讨论,它会给你一些关于你需要什么的方向:http: //social.msdn.microsoft.com/Forums/vstudio/en-US/f82f9cd8-87d6-4a4e-9e03-5dd2d143c680/wcf-服务并发锁定正确的方法
于 2013-09-11T09:59:03.330 回答