ASP.NET异步任务 – 如何使用Page.RegisterAsyncTask使用WebClie
我要为我所工作的网站做的一项常见任务如下:
>从某些第三方API下载数据 我最初使用WebClient.DownloadStringAsync并对结果进行处理.但是我发现DownloadStringAsync并不尊重AsyncTimeout参数,一旦我做了一些关于它是如何工作的阅读,我就会有所期待. 我最终调整了the example on how to use PageAsyncTask的代码来使用DownloadString() – 请注意,这是同步版本.这可能没问题,因为任务现在是异步的.任务现在正常超时,我可以通过PreRender()时间获取数据 – 我可以很容易地对其进行泛化并将其放在我需要此功能的任何页面上. 但是我只是担心它不是’干净’.完成任务时不会通知页面,就像DownloadStringAsync方法那样 – 我只需要在我的PreRender事件结尾处挖掘结果(存储在类中的字段中). 有没有办法让Webclient的Async方法与RegisterPageTask一起使用,或者是我能做的最好的辅助类? 注意:没有MVC – 这是vanilla asp.net 4.0. 解决方法
如果您希望在异步任务完成时调用页面上的事件处理程序,则只需要挂起一个.要扩展您链接的MSDN“如何”文章:
>修改“SlowTask”类以包含一个事件,例如 – public event EventHandler Finished; 关于ExecuteRegisteredAsyncTasks()是阻塞调用,这仅基于我的经验.它没有在MSDN-http://msdn.microsoft.com/en-us/library/system.web.ui.page.executeregisteredasynctasks.aspx中明确记录 也就是说,只要它没有返回WaitHandle或类似的东西,它就不是那么实用,但它是阻塞调用.如果它没有阻塞管道,则会在异步任务完成之前呈现并返回到客户端,这使得将任务结果返回给客户端有点困难. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP.NET MVC 3中DropDownListFor的不显眼验证问题
- asp.net-mvc – Asp mvc 3 noobie:为什么代码优先方法不在
- asp如何获取热点api接口?
- 打爆你的 CPU
- 将ASP.NET TextBox作为HTML5输入类型“Number”
- asp.net – 基于角色为网站实现不同视图的最佳方法是什么?
- asp.net – 获取数据绑定到ListView上DataBound事件
- asp.net-core – 找不到Swashbuckle.AspNetCore SwaggerOpe
- asp.net – 在VS2008发布网站后,全球资源无法解决
- 在同一IIS上的ASP.NET应用程序之间共享信息