我有一个云应用程序,它包含一个与Silverlight客户端通信的云服务,还可以与数据库通信以存储信息。
Silverlight客户端有一个可以操作的3D对象(设置位置和颜色),并且更改被发送到云服务,云服务将其存储在数据库中。
我使用System.Windows.Controls.Slider
设置3D对象的颜色(3个滑块分别设置R,G和B)。
所有信息都正确写入和读取数据库但问题是,由于某种原因,当我刷新客户端(网页)时,颜色设置不好(只有R滑块工作正常)。 这很奇怪,因为操作对象时颜色仍然保持良好状态,而不是刷新网页。
刷新页面时,只有红色滑块正确设置为DB读取值,但其他两个滑块在初始化时保持不变,为50。
现在我注意到,在第一次分配后,_clientState
会更新。就像在第一次分配之后,应用程序认为这是一个新状态。例如,它必须设置0,0,0但是当设置第一个值(50,0,0)时,它就像一个“新状态”,并设置“新”颜色。
不应该这样,因为在处理_clientState的代码片段上有一个锁定语句:
更新滑块(每次更新都会调用):
lock (_lock)
{
sliderRed.Value = _clientState.R;
sliderGreen.Value = _clientState.G;
sliderBlue.Value = _clientState.B;
}
设置颜色(移动滑块时调用):
lock (_lock)
{
_clientState.R = c.R;
_clientState.G = c.G;
_clientState.B = c.B;
sliderBlue.Value = c.B;
sliderGreen.Value = c.G;
sliderRed.Value = c.R;
}
等等......
所以,很明显锁定不正常。我该怎么做才能解决它?