【发布时间】:2023-03-26 12:23:01
【问题描述】:
在完成对 WCF 服务的异步调用后,我想将成功消息设置到会话中并向用户显示通知。
我尝试使用两种方式来完成这个操作。
1) 基于事件的模型。
client.GetDataCompleted += new EventHandler<GetDataCompletedEventArgs>(GetDataCompleted);
client.GetDataAsync(id, client);
private void GetDataCompleted(object obj, GetDataCompletedEventArgs e)
{
this.SetNotification(new Notification() { Message = e.Result, Type = NotificationType.Success });
}
在 MyOperationCompleted 事件中,我可以将通知设置为 HttpContext.Current.Session,但我必须等待此操作完成并且无法导航到其他页面。
2) IAsyncResult 模型。 这样我可以导航到其他页面并对 wcf 服务进行异步调用,但是在 GetDataCallback 方法中无法设置通知,因为 session = null。
client.BeginGetData(id, GetDataCallback, client); 私人无效GetDataCallback(IAsyncResult ar) { 字符串名称 = ((ServiceReference1.Service1Client)ar.AsyncState).EndGetData(ar); this.SetNotification(new Notification() { Message = name, Type = NotificationType.Success }); }启用服务引用中的“生成异步操作”。
请帮我解决这个问题。谢谢。
【问题讨论】:
标签: asp.net-mvc wcf asynchronous callback