一般情况下对IT管理者来说,在SharePointFarm中维护Feature,更喜欢使用命令行实现,这样可以省去登录到具体站点的操作。比如IT接到enduser的一个需求,要开启SiteCollectionFeature,如果直接操作......
2023-01-12
主要就是关于事件触发器的同步/异步的设置以及作用。
其实接触SharePoint颇久,对于事件触发器写的不多,但是同步/异步这个概念还是了解的,不过没有深究罢了。今天,和大家讨论了一下,也更加深刻的理解了这个概念;当然,有人说异步是单开一个线程操作,这个我不了解,但是不反对,因为无论如何,不是执行完毕操作立即执行事件,这就是异步了,我们不讨论内部机制是如何开辟线程,或者组织异步队列的。
SharePoint中事件触发器,关于before事件(就是ing标志的事件),默认都是同步的,我理解就是完成一个操作之前,马上执行这个事件;而after的事件(就是ed标志的事件),默认都是异步的,也就是完成一个操作,不是立刻马上执行事件。至于为什么ed结尾的事件都是异步的呢?因为SharePoint为了方式UI上的操作和触发的事件冲突,所以把它设置为异步,至于内部如何处理异步,我觉得没必要太抠细节了。
关于before事件,就是完成操作之前触发,这个只能是同步,SharePoint不允许定义为异步;而after事件呢?就是完成操作之后触发,默认异步,但是可以设置为同步,但是设置为同步以后,就不能再更新属性了,防止和UI操作的冲突。
举个简单的例子,上传一个文档,然后都OK了弹出了上传以后的标题,然后UI会弹出修改属性的页面,这时,时间触发器同步修改了标题,但是却没有被属性页面加载出来,所以这时修改属性,会造成保存上的冲突。当然,有人说执行完事件以后,再弹出UI修改属性的页面,这样如果事件需要时间,就会造成效率上的问题。
当然例子比较简单,就是给大家理解加一个参考罢了。也许自己的理解并不够深刻,希望有独特见解的,大家能够留言讨论。
简单介绍下,after事件如何设置同步,在属性的xml文件里,设置即可,如下:
复制代码
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<Receivers ListUrl="ListName">
<Receiver>
<Name>EventReceiver1ItemAdded</Name>
<Type>ItemAdded</Type>
<Assembly>$SharePoint.Project.AssemblyFullName$</Assembly>
<Class>EventReceiverProject1.EventReceiver1.EventReceiver1</Class>
<SequenceNumber>1000</SequenceNumber>
<Synchronization>Synchronous</Synchronization>
</Receiver>
</Receivers>
</Elements>
相关文章
一般情况下对IT管理者来说,在SharePointFarm中维护Feature,更喜欢使用命令行实现,这样可以省去登录到具体站点的操作。比如IT接到enduser的一个需求,要开启SiteCollectionFeature,如果直接操作......
2023-01-12
我们经常会在SharePoint网站集的权限列表中看到某个user有LimitedAccessPermission,但是我们都知道或者试过,在SharePointsitecollection中没有办法直接添加user赋予LimitedAccess权限,并且LimitedAccess这个......
2023-01-12
在这样的场景下,比如统计员工的个人信息,IT会在SharePoint中新建list,加一些需要填写的栏位,然后让公司员工登录填写。这时候比起大家都能看到彼此信息而言,从公司角度更想让员工只能......
2023-01-12
大多数企业使用SharePoint文档库时,都会建议EndUser在编辑文档前先做CheckOut动作,这样可以保证文档在当前用户编辑过程中,其他人只能view而不能edit,防止多人同时修改同一文件互相影响的......
2023-01-12
为了记录SharePointLibrary/List中file/Item的修改情况,ITAdministrator会在List/Library的VersionSettings中开启Version管控设置。之后用户每次编辑item/file保存就会生成一个新的version记录,这样我们就会知道......
2023-01-12