关于异步Http调用的一个问题

M1234 2012-05-19 11:27:11
大概流程

用户通过登录界面登录后从服务区取得token保存在本地,这个token用于调用Http服务器的其他方法。

用户从界面1点击按钮 -> 界面2,界面2的OnLoaded方法做异步Http调用,UI在等待,调用完成MessageBox提示返回

问题:因为token可能会失效,在界面2的异步调用后发现服务器返回代码表示token失效,所以想把阻塞当前UI,重新从服务器获取token后再次,运行OnLoaded中的内容,请问应该怎么做?
...全文
87 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
datacloud 2012-05-20
  • 打赏
  • 举报
回复
楼上说的有理。
如果非要这么做,可将token无效时的处理交给委托去处理。
gnimgnot 2012-05-20
  • 打赏
  • 举报
回复
UI最好不要阻塞,不好的用户体验,你只需要在B页面的操作之前判断一下token的可用性即可
M1234 2012-05-20
  • 打赏
  • 举报
回复
伪代码:

OnLoaded()
{
DoTask();
}

DoTask()
{
Api api = new Api();
api.OnDownloadCompleted += OnDownloadCompleted;
api.doTask();
}

OnDownloadCompleted(object sender, DownloadCompletedEventArgs e)
{
//这里的doLogin怎么些?不能再异步了吧?所以需要阻塞在这里
if (e.Result == token无效) { doLogin(); DoTask(); }
}
M1234 2012-05-20
  • 打赏
  • 举报
回复
把doTask放到doLogin的回调方法中,暂时这样了。
test2050 2012-05-19
  • 打赏
  • 举报
回复
不懂。阻塞UI,有这么处理的吗。是不是可以换个思路解决问题。

110,539

社区成员

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

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

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