异步事件处理Silverlight页面生命周期问题

问题描述 投票:11回答:1

在我的ASP.net web应用程序,我在我的页面的Page_Init事件(),检查一些会话变量是否发生了会话超时将用户重定向代码。

在我的Silverlight应用程序我有一个按钮事件,其任务异步执行一些ESRI的ArcGIS代码,并配置一个事件处理程序的异步调用完成时触发:

QueryTask queryTask = new QueryTask(myLayer.Url + "/" + layerID);
queryTask.ExecuteCompleted += new EventHandler<QueryEventArgs>(queryCountyTask_ExecuteCompleted);
queryTask.ExecuteAsync(query);

还有一点代码调用JavaScript函数在页面隐藏面板。这段代码的加入导致一整页回发。

HtmlPage.Window.Invoke("hideReport"); 

我的问题是,有时queryCountyTask_ExecuteCompleted()的Page_Init()页事件之前Silvelright事件触发,有时后触发。在这种情况下,页面事件之前,Silverlight的火灾,会话状态是空的,导致用户无法正确重定向到“您的会话已超时”页面。只要page事件之后Silverlight的事件触发时,Session变量仍然存在,一切工作正常。

它看起来像Invoke方法的位置具有当页面级事件被触发上没有关系,所以事件的顺序似乎是看似随意的。有没有办法订购的事件,以避免这些竞争条件?

有没有办法用一个Web应用程序页面的正常页面生命周期来协调这些异步回调事件,以避免这些竞争条件?

asp.net silverlight arcgis
1个回答
1
投票

如果前后翻页的问题怎么样让你的ASP.net页火Silverlight的功能,它已经完成之后,所以会出现竞争状态。

下面是关于如何使Silverlight中的事件从外部JavaScript,应该帮助编写脚本的一个Link

© www.soinside.com 2019 - 2024. All rights reserved.