【发布时间】:2011-06-11 15:55:05
【问题描述】:
我有一个 wcf 回调服务和以下场景:
客户端向服务发送请求,并修改数据库中矩形的颜色,服务通知它颜色已更改,我现在想在回调通知方法中为单击的矩形着色选择颜色:
这是我点击矩形时调用的方法
private void ChangeRectangleState_Single(object sender, RoutedEventArgs e)
{
Path mc = (Path)sender;
String name = mc.Name;
flag_macaz = colorClass.getRectangleColor(mc.Name+"_a",rectangleServiceClient);
ColorClass.changeRectangleColor(flag_rectangle,macazServiceClient,mc.Name+"_a");
}
public void RectangleServiceCallback_ClientNotified(objectsender,Rectangle NotifiedEventArgs e)
{
String name = e.RectangleName;
object wantedNode_a = Window.FindName(e.RectangleName);
Path rectangle = wantedNode_a as Path;
if (e.RectangleColor == 1)
{
rectangle.fill=...
}
else
if (e.RectangleColor == 0)
{
rectangle.fill=...
}
}
但我收到错误“调用线程无法访问此对象,因为不同的线程拥有它。”
我尝试了http://www.switchonthecode.com/tutorials/working-with-the-wpf-dispatcher 的想法,但客户端被阻止了。
有人有其他想法吗?
【问题讨论】:
-
为什么在请求响应足够的情况下使用回调?
-
我想通知其他客户有关新颜色的信息。我有一个带有交通信号灯的应用程序。我希望当用户更改交通信号灯的灯时,其他用户可以看到,收到通知那个。
标签: wpf multithreading wcf callback