【问题标题】:Asynchronous methods in a webpartWeb 部件中的异步方法
【发布时间】:2010-01-12 09:49:27
【问题描述】:

我已经在 webpart 上编码了几天。这个 webpart 的重点是清理给定的文档库。我有 16 000 多个 msg 文件,我必须根据一些给定的规则验证每个 msg 文件的 To 和 From 标头。

一切都很好,除了这个过程需要很长时间。 To 或 From 中允许的所有可能值都存储在 SharePoint 本身的 SPLists 中。

通过异步调用特定的邮件验证方法,我能够根据业务规则和 Web 部件本身拆分验证过程。

现在,我有点迷茫的技术部分:

该方法返回一个我想绑定到 CheckBoxList 的字典。 那么我该怎么做呢?因为我必须等到我的异步邮件验证方法完成后才能绑定 CheckBoxList 的数据源?

我的 webpart 实际上由我加载到 webpart 中的用户控件组成。

【问题讨论】:

    标签: c# sharepoint asynchronous web-parts


    【解决方案1】:

    您是否考虑过使用 jQuery/Ajax 代替用户控件和直接代码?这就是我在 webpart 上处理异步加载的方式,记住我们 99% 的开发使用 xml/xslt 来生成 html。

    【讨论】:

    • 我不太明白你的回答。我使用用户控件,因为这对我来说似乎是一种更干净的方法,然后直接在 Web 部件本身中进行编码。我只有一种方法需要异步运行。一种 C# 方法。我不认为 jQuery/AJAX 可以帮助解决这个问题还是我错了?
    【解决方案2】:

    你的异步方法应该调用一个回调函数来继续处理。这个回调应该做绑定;它仅在异步过程完成时发生..

    或者,如果有这么多项目,您可能仍然会遇到问题。为什么不创建一个完全异步的进程?您的 Web 部件可以在 SharePoint 中安排一个运行一次的计时器作业,该作业完全异步执行您的清理工作。或者将您的作业的详细信息记录在一个列表中,该列表可以通过预定的可执行或 stsadm 命令扩展来获取。 这将适用于您列表中的任意数量的项目。

    【讨论】:

    • 谢谢。我确实遇到了这么多项目的麻烦。我已应用您的解决方案来存储我需要在列表中删除的项目。然后,我的 webpart 会检查该列表是否包含项目并据此采取行动。这不是很理想,因为我需要重新加载包含 webpart 的页面。
    猜你喜欢
    • 2015-03-30
    • 1970-01-01
    • 2011-08-28
    • 1970-01-01
    • 1970-01-01
    • 2012-07-04
    • 2021-04-18
    • 1970-01-01
    • 2010-10-18
    相关资源
    最近更新 更多