Wcf异步调用客户端的callback方法

虾扯蛋实验室 2009-05-04 01:21:26

在服务端定义callback接口

public interface ICallback
{
[OperationContract(IsOneWay = true)]
void ServerMessage(string message);
}


通过svcutil.exe /async 生成客户端代理

public partial class ClientCallback :ICallback
{
public IAsyncResult BeginServerMessage(string message, System.AsyncCallback callback, object asyncState)
{

}
public void EndServerMessage(System.IAsyncResult result)
{
}
public void ServerMessage(string message)
{


}
}


有两个问题
一是上边的客户端代码应该如何实现?
二是在服务端只能使用
OperationContext.Current.GetCallbackChannel<ICallback>()

只能调用ServerMessage方法,却没有BeginServerMessage这样的异步方法
...全文
274 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Reentrant)]
public class MyService : IMyContract
{
#region IMyContract 成员

public void Test()
{
IMyContractCallBack callBack = OperationContext.Current.GetCallbackChannel<IMyContractCallBack>();
if (callBack != null)
{
IAsyncResult asyncResult = callBack.BeginClientTime(null, null);
asyncResult.AsyncWaitHandle.WaitOne(100);
DateTime dt = callBack.EndClientTime(asyncResult);
Console.WriteLine(dt);
}
}

#endregion
}
  • 打赏
  • 举报
回复
只需要把回调客户端看成是服务端就行了。服务端不用实现直接用那个接口就行了
Sea_Shore 2009-06-12
  • 打赏
  • 举报
回复
通过svcutil.exe /async 生成客户端代理

怎么生成呀,初学者!
虾扯蛋实验室 2009-05-10
  • 打赏
  • 举报
回复
这个问题绝对难倒版里的同志
虾扯蛋实验室 2009-05-06
  • 打赏
  • 举报
回复
顶一顶
sushou2009 2009-05-06
  • 打赏
  • 举报
回复
后续关注.....

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧