服务协定IServer接口中有双向操作 bool Login();实现类为WCFService
回调协定ICallback接口中有string ReplyClient(string msg);实现类为IClientService
网上找了一下回调的资料,回调方法的应用都是写在服务端执行操作方法里面的。比如:
实现类WCFService中实现方法
public class WCFService:IServer{
public bool Login(){
IClientService callbackChannel = OperationContext.Current.GetCallbackChannel<IClientService>();
//在这里写回调,客户端能正常接收到服务端发来的“测试”二字
callbackChannel.ReplyClient("测试");
}
}
但是如果我这样写:
public class WCFService:IServer{
public static List<IClientService> callbackList = new List<IClientService>();
public bool Login(){
IClientService callbackChannel = OperationContext.Current.GetCallbackChannel<IClientService>();
callbackList.Add(callbackChannel);
}
然后在某个画面的按钮点击事件中写道:
private void button1_Click(object sender, EventArgs e) {
foreach(var item in WCFService.callbackList){
item.ReplyClient("测试");//这样写客户端却接收不到
}
}
这是为什么呢
回调协定ICallback接口中有string ReplyClient(string msg);实现类为IClientService
网上找了一下回调的资料,回调方法的应用都是写在服务端执行操作方法里面的。比如:
实现类WCFService中实现方法
public class WCFService:IServer{
public bool Login(){
IClientService callbackChannel = OperationContext.Current.GetCallbackChannel<IClientService>();
//在这里写回调,客户端能正常接收到服务端发来的“测试”二字
callbackChannel.ReplyClient("测试");
}
}
但是如果我这样写:
public class WCFService:IServer{
public static List<IClientService> callbackList = new List<IClientService>();
public bool Login(){
IClientService callbackChannel = OperationContext.Current.GetCallbackChannel<IClientService>();
callbackList.Add(callbackChannel);
}
然后在某个画面的按钮点击事件中写道:
private void button1_Click(object sender, EventArgs e) {
foreach(var item in WCFService.callbackList){
item.ReplyClient("测试");//这样写客户端却接收不到
}
}
这是为什么呢