我正在尝试通过此示例学习 WCF http://www.codeproject.com/Articles/39143/C-WCF-Client-Server-without-HTTP-with-Callbacks-Ma
还尝试通过添加与多个客户端的互斥来扩展服务器上的功能。我基本上是在尝试拥有一个全局数字数组和一个可以访问该数组的函数(已通过 Operationcontract 公开)。但一次只允许一个客户端访问该数组。
有人可以通过添加一个带有互斥锁的简单功能来为我指明正确的方向吗?
我正在尝试通过此示例学习 WCF http://www.codeproject.com/Articles/39143/C-WCF-Client-Server-without-HTTP-with-Callbacks-Ma
还尝试通过添加与多个客户端的互斥来扩展服务器上的功能。我基本上是在尝试拥有一个全局数字数组和一个可以访问该数组的函数(已通过 Operationcontract 公开)。但一次只允许一个客户端访问该数组。
有人可以通过添加一个带有互斥锁的简单功能来为我指明正确的方向吗?
根据您到底想要做什么,如何在访问您的数组的函数周围加锁(也许事件将您的数组放入单例中)。
那么你可以有
class SingletonClassForYourArray {
object aLock = new object();
int yourArray;
private SingletonClassForYourArray instance;
public SingletonClassForYourArray GetInstance()
{
// normal singleton init of instance on demand
}
int [] YourArray
{
get
{
lock(aLock)
{
return yourArray;
}
}
}
}
这将是只有一个客户端访问阵列的最简单方法。所有没有锁的客户端都必须轮流等待(不能保证公平)。请小心,因为如果客户端必须等待很长时间,这可能会导致超时。