Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Page.RegisterAsyncTask';有人打电话给谁?_C#_Asp.net_Async Await_Viewstate_.net 4.5.2 - Fatal编程技术网

C# Page.RegisterAsyncTask';有人打电话给谁?

C# Page.RegisterAsyncTask';有人打电话给谁?,c#,asp.net,async-await,viewstate,.net-4.5.2,C#,Asp.net,Async Await,Viewstate,.net 4.5.2,我遇到了与ASP.NET页面上注册的异步代码(带有RegisterAsyncTask、ViewState和复选框)相关的混乱行为,我需要确切地知道这些异步任务相对于保存ViewState的时间的运行时间 我在ASP:PlaceHolder控件中有几个复选框。我正在读取一条记录并填充复选框,然后使占位符可见 如果所有这些都是同步的-可能在页面加载中-那么一切都很好 如果将其注册为异步任务,则会发生以下情况: 复选框会被填充 占位符可见 回发时,不能取消选中复选框。也就是说,如果最初选中了它们,即使

我遇到了与ASP.NET页面上注册的异步代码(带有RegisterAsyncTask、ViewState和复选框)相关的混乱行为,我需要确切地知道这些异步任务相对于保存ViewState的时间的运行时间

我在ASP:PlaceHolder控件中有几个复选框。我正在读取一条记录并填充复选框,然后使占位符可见

如果所有这些都是同步的-可能在页面加载中-那么一切都很好

如果将其注册为异步任务,则会发生以下情况:

  • 复选框会被填充
  • 占位符可见
  • 回发时,不能取消选中复选框。也就是说,如果最初选中了它们,即使用户取消选中它们,它们也会保留其选中状态。似乎复选框会恢复为初始值。如果在客户机上选中了复选框,那么它就成功了!取消勾选不会
  • 这似乎不是文本框的问题。我还没有试过其他小部件

    我可以通过在注册异步任务之前将占位符设置为可见来“纠正”此问题。我认为这与我关于网格可视性的另一个问题类似:

    当我试图从异步方法中提取所有可视性规则时,这变得非常困难,并导致代码混乱

    我从ASP.NET页面生命周期中看到,该生命周期在OnPreRender之前保存。我还认为RegisterAsyncTask的代码大约在同一时间运行。这种情况发生的顺序是什么?如果在我的代码运行之前保存ViewState,我就沉沦了

    编辑:我发现了一些更详细的信息,但仍然令人困惑: 在这一页的一半:上面写着

    “与RegisterAsyncTask连接的方法将在预呈现后立即运行。”

    此页面:详细说明PreRender和SaveStateComplete事件,但未提及RegisterAsyncTask。我需要进行实验,看看它们之间是否有角。

    在任务开始时,可以让您进行更多的控制

    此时会自动调用ExecuteRegisteredAsyncTasks方法 当任何已注册的异步任务, 如果存在,则为非异步页面调用这是自动的 调用
    ExecuteRegisteredAsyncTasks
    发生在 事件。

    从文件:

    这是保存页面的视图状态之前引发的最后一个事件


    非常感谢你这么做。这简直让我抓狂。我检测了所有页面事件,查看了占位符可见性、复选框状态和相应的表单字段。如果我在异步方法中将可见性设置为true,那么它将失败。如果我在安排异步方法之前将其设置为OnLoad,它就会工作@n8wrl-我认为您不应该仅在异步方法执行后才更改其UI中的任何内容,请参阅链接MSDN页面中ExecuteRegisteredAsyncTasks的示例代码。