我在页面上有一个链接按钮,该按钮的click事件的事件处理程序调用一个对象的方法,该对象反过来调用webservice,当webservice返回对象时触发一个事件和一个事件处理程序页面上的codebehind更新页面上的标签。由于某种原因,标签不显示消息。
这让我疯狂,我在谷歌上找不到任何关于它的东西。任何帮助都会得到满足。
正在异步调用Web服务,但线程被阻塞直到它返回。并且在代理对象事件处理程序设置其文本之后调用标签预渲染事件。
所有调用都发生在同一个线程上,我在事件处理程序中设置的任何值,而不仅仅是标签文本,都会在预渲染事件触发时恢复到之前的值。
答案 0 :(得分:3)
以下是发生的事情:
<强>更新强>
OP发布后更新了他的问题,表明生命周期时间保持同步。所以相反,我会指出ASP.Net中的控件不是线程安全的,但是从后台使用的线程调用webservice completed事件来生成异步请求而不是原始线程。设置属性时,您应该Invoke
控件。
答案 1 :(得分:0)
你在Page_Load活动中有这个吗?
if (Page.IsPostBack)
{
return;
}
如果没有,可以在回发后重新初始化标签。
答案 2 :(得分:0)
Web服务是否异步运行?在页面呈现后,webservice完成事件可能会触发吗?您是否进行了调试以确保标签值已设置?