gpt4 book ai didi

asp.net - Silverlight 页面生命周期问题与异步事件处理程序

转载 作者:行者123 更新时间:2023-12-04 02:27:47 25 4
gpt4 key购买 nike

在我的 ASP.net Web 应用程序中,我的页面的 Page_Init event() 中有代码,如果发生 session 超时,它会检查一些 session 变量以重定向用户。

在我的 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() Silvelright 事件在 Page_Init() Page 事件之前触发,有时在之后触发。在 Page 事件之前触发 Silverlight 的情况下, session 状态为空,导致用户被错误地重定向到“您的 session 已超时”页面。只要在 Page 事件之后触发 Silverlight 事件,Session 变量仍然存在并且一切正常。

看起来 Invoke 方法的位置与何时触发页面级事件无关,因此事件的顺序似乎是随机的。
有没有办法对事件进行排序以避免这些竞争条件?

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

最佳答案

如果您围绕如何让您的 ASP.net 页面在完成后触发 Silverlight 函数来解决问题,那么就不会有竞争条件。

这是一个 Link关于如何从应该有帮助的外部 javascript 编写 Silverlight 中的事件。

关于asp.net - Silverlight 页面生命周期问题与异步事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29614615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com