SharePoint 中关于event receivers的讨论
今天一早,跟几个小伙伴在群里讨论了有关事件触发器的东西,感觉收获颇多,拿出来和大家分享。讨论的内容,主要就是关于事件触发器的同步/异步的设置以及作用。
其实接触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>
最后,感谢SharePoint技术联盟的几个好伙伴,忘忧草、四毛和Berkaroad,我相信有讨论取长补短,大家才会有进步。
参考资料
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.speventreceiverdefinition.synchronization(v=office.15).aspx
SharePoint 中关于event receivers的讨论相关推荐
- SharePoint中添加或者修改Item时调用EventReceiver(Event Handler)处理额外的逻辑
SharePoint中添加或者修改Item时调用EventReceiver(Event Handler)处理额外的逻辑.取名:EricSunArticlesListItemEventReceiver ...
- BEGINNING SHAREPOINT#174; 2013 DEVELOPMENT 第12章节--SP 2013中远程Event Receivers 总结
BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第12章节--SP 2013中远程Event Receivers 总结 本章节向你介绍了SP平台上event recei ...
- 编写和布置一个List Event Receivers(下)
前文说到已经将类写好并放到GAC里面了,本文将接着介绍如何布置List Event Receivers. 布置List Event Receivers有三种方法,分别是: 1. 通过编程的方式 ...
- MNE-Python从Raw对象中解析event
今天结合案例代码给大家介绍一下MNE是如何从Raw对象中解析event的. 这篇内容主要描述了如何从原始记录中读取实验事件,以及如何在MNE-Python中事件的两种不同表示形式(事件数组和注释对象) ...
- SharePoint中的富文本编辑器控件
在sharepoint中,自带一个html文本编辑器,可以对字体的大小,颜色甚至复制和粘贴都可以.这次做项目我们准备通过spd把这个编辑器放到自定义的aspx页面中.费了很大的力气,终于在博客堂()和 ...
- [vue] 在vue事件中传入$event,使用e.target和e.currentTarget有什么区别?
[vue] 在vue事件中传入$event,使用e.target和e.currentTarget有什么区别? event.currentTarget指向事件所绑定的元素,而event.target始终 ...
- [转]SP 2010: How To – Event Receivers and Custom Error Pages
原文地址:http://zimmergren.net/technical/sp-2010-how-to-event-receivers-and-custom-error-pages SharePoin ...
- 一步一步SharePoint 2007之三十七:在SharePoint中实现Workflow(3)——运行Workflow
下面将记录每一步的操作过程. 1.首先打开我的网站,依次点击Document Center.Announcements,进入Announcements列表页面. 2.在Announcements列表界 ...
- doe报告模板_技术漫谈|关于制剂研发过程中的实验设计(DOE)误区讨论
技术漫谈 第01期 关于制剂研发过程中的实验设计(DOE)误区讨论 // 作者:合全药业制剂业务后期项目部 感谢合全药业制剂研发后期团队朱莹.夏彬等同事对本稿件的支持 早在2004-2005年,FDA ...
最新文章
- freeswitch模块之event_socket
- Fabricjs对Canvas画布和对象的事件监听
- 分布式理论、架构设计(自定义RPC)
- 13.深度学习练习:Autonomous driving - Car detection(YOLO实战)
- linux find 拷贝,通过find命令寻找文件并拷贝到一个指定目录方法详解
- java追加字符串到文件_java 将字符串追加到文件已有内容后面的操作
- tomcat-1-初识
- word多个文档标签显示在一个窗口
- 树莓派遇见逻辑分析仪,看看树莓派PWM信号和UART信号!
- 给大家讲解一下 AIDL原理分析
- html5制作旋转正方体,html5—旋转立方体
- 彻底理解View事件体系!
- numpy合并不同维度矩阵_玩数据必备Python库:Numpy使用详解
- 多人扑克游戏:99分游戏规则介绍
- 【Java基础】重写equals方法详讲
- 全面解读系统更新,收藏下这份 Android 12 (S) 版本适配自查表
- 微信开发 缓存Storage
- [案例4-4]学生和老师
- 地理坐标(经纬度)转换成投影坐标(XY坐标)
- acrobat PDF删除部分_PDF编辑器Adobe Acrobat DC 2019