PageOffice并发控制

PageOffice并发控制并发控制使用 TimeSlice 属性设置打开文档的并发控制时间 防止多个用户同时打开一个文件 出现编辑保存文件相互覆盖的问题

PageOffice文件并发控制

1. 功能介绍

PageOffice的并发控制功能用来解决多个用户在线编辑同一篇文档可能造成的互相覆盖修改结果的技术难题。

B/S架构下用户访问都是并发的,也就是说经常会出现同时N个用户对一个服务器页面发出请求,这就有可能同一个文档被多个用户同时打开进行编辑。为什么会出现互相覆盖呢?举个简单例子,例如A用户先访问页面打开了一个文档开始编辑,这时B用户访问相同的页面打开了同一个文档也开始编辑,B用户可能很快就完成了文档修改工作并且保存到服务器。随后A用户也完成了工作并保存文档到服务器。这时,服务器上的这个文档已经变成了A用户修改的最后结果,B用户的修改被A的保存操作覆盖从而消失了。

PageOffice的并发控制能够保证同一时间同一篇文档只能由一个人打开,而这样复杂的控制只需要开发者简单对TimeSlice属性赋值即可实现。无论打开的文档是存放在数据库还是存在物理磁盘里,只要对此文档设置了并发控制,那么实现的效果都是只有当前用户可以对此文档进行编辑、保存等操作,其他用户只能以只读的形式打开。在并发控制期间,其他用户有三个选择,分别是“终止”、“重试”和“忽略”。选择“终止”,则关闭当前提示对话框,对此文档不进行任何操作;选择“重试”,则可以了解当前操作用户的编辑时间是否已经用完,同时可以看到当前操作用户的剩余编辑时间;选择“忽略”,则以只读方式打开此文档,即只能阅读此文档,不能对此文档进行编辑、修改、保存等操作。

2. 如何实现并发控制

PageOfficeCtrl1.setTimeSlice(4); PageOfficeCtrl1.WebOpen("doc/abc.doc",PageOffice.OpenModeType. docAdmin, "a");

用户b的打开文档的操作如下:

PageOfficeCtrl1.setTimeSlice(4); PageOfficeCtrl1.WebOpen("doc/abc.doc", PageOffice.OpenModeType. docAdmin, "b");

那么如果对doc/abc.doc这个文档设置了并发控制的话,当a打开此文档后,b只能以只读方式打开此文档,直到a的控制时间结束后,b才可以对此文档进行编辑。

PageOfficeCtrl1.setTimeSlice(4); PageOfficeCtrl1.WebOpen("a.aspx?id=1", PageOffice.OpenModeType. docAdmin, "a");

用户b的打开文档的操作如下:

PageOfficeCtrl1.TimeSlice = 4; PageOfficeCtrl1.WebOpen("a.aspx?id=1", PageOffice.OpenModeType. docAdmin, "b");

那么如果对这个a.aspx?id=1地址下载的文档设置了并发控制的话,当a打开此文档后,b只能以只读方式打开此文档,直到a的控制时间结束后,b才可以对此文档进行编辑。

(1)例如都是两个不同的动态页面地址都可以下载同一个文件:地址a.aspx?id=1和地址b.aspx?id=1下载的是服务器端同一个文档,用户a的打开文档的代码是:

PageOfficeCtrl1.setTimeSlice(4); PageOfficeCtrl1.WebOpen("a.aspx?id=1", PageOffice.OpenModeType.docAdmin, "a");

用户b的打开文档的代码是:

PageOfficeCtrl1.setTimeSlice(4); PageOfficeCtrl1.WebOpen("b.aspx?id=1", PageOffice.OpenModeType. docAdmin, "b");

这样虽然“a.aspx?id=1”和“b.aspx?id=1”打开的是同一个文档,但是因为WebOpen的第一个参数值不同,对于PageOffice来说打开文档的URL也不同,PageOffice认为是两个不同的文件,这种情况并发控制就不起作用了。

(2)例如一个用动态页面地址和一个用文档名结尾的URL地址:访问“a.aspx?id=1”下载的文件就是doc/abc.doc,用户a的打开文档的代码是:

PageOfficeCtrl1.setTimeSlice(4); PageOfficeCtrl1.WebOpen("a.aspx?id=1", PageOffice.OpenModeType. docAdmin, "a");

用户b的打开文档的代码是:

PageOfficeCtrl1.TimeSlice = 4; PageOfficeCtrl1.WebOpen("doc/abc.doc", PageOffice.OpenModeType. docAdmin, "b",);

还是因为WebOpen的第一个参数值不同,虽然打开的是同一个文档,但是因为PageOffice认为两个文档的URL不一样,所以并发控制也不起作用。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/218833.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午11:22
下一篇 2026年3月17日 下午11:22


相关推荐

  • javacv使用笔记

    javacv使用笔记javacv 使用笔记一 前言最近在做一个视频审核的功能 但是运营觉得每个视频都要看一篇太浪费时间了 于是提出了这样一个需求 给每个视频随机截取 5 张图片展示出来 根据这 5 张图片决定是否需要继续观看视频内容 以提高审核效率 既然运营提出了这样的需求 就得尽力去完成 二 准备首先从感性的角度分析该需求肯定可以实现的 毕竟软件开发技术已经是相当成熟了 只是暂时不知道什么技术可以实现该功

    2026年3月19日
    1
  • pycharm运行停止快捷键

    pycharm运行停止快捷键运行 shift f10 停止 ctrl f2

    2026年3月27日
    4
  • 百度发布文心大模型 4.5 Turbo / X1 Turbo:主打多模态、强推理、低成本

    百度发布文心大模型 4.5 Turbo / X1 Turbo:主打多模态、强推理、低成本

    2026年3月12日
    2
  • iPhone使用教程_iphone基础使用

    iPhone使用教程_iphone基础使用iPhone史上最全的使用教程iPhone的解锁、越狱、激活、固件等等是什么意思,有什么分别这几天看见好多新人问这几个词的含义及区别。我在这儿说说我的看法,不是官方解释,不懂的学习一下,懂的绕道,如有错误,敬请指正!第一次买来时或恢复官方固件后,iPhone会处于那种只能拨打紧急电话状态,不能使用其它功能,如果要使用其它功能,就必须进行一项操作,那就是“激活”。一般有锁版的只有使…

    2025年11月23日
    7
  • 阿里云、腾讯云、UCloud和AWS的云主机测评

    阿里云、腾讯云、UCloud和AWS的云主机测评前言云计算和大数据早已成了炙手可热的话题 各大云服务商近年来也相继推出了覆盖广泛的各类新鲜云服务 其中云主机和云存储应该算得上是使用最普遍的业务了 由于每家云服务商采用的硬件型号 架构和优化技术都不尽相同 不同云服务商相同配置的云主机之间就存在一定的性能差距 为了弄清这个差距 给大家的选购提供参考 今天我们将着重对云主机性能方面做一系列测试 本次云主机的主要测评对象为阿里云 腾讯云和 UCloud 三家的云主机 它们在国内都拥有提供成熟稳定的云主机产品的能力 AWS 为亚马逊云 在本次测评中起参照

    2026年3月17日
    2
  • python数字推盘_从零开始学编程做游戏:一个文科生策划的14周

    python数字推盘_从零开始学编程做游戏:一个文科生策划的14周点击”humansflee”按钮则人类移动一回合,点击”zombiesstalk”按钮则僵尸移动一回合。它们采取的寻路策略都是广度优先搜索。游戏不会结束,你可以在这个沙盒中给自己安排胜利条件。布置各种各样的场面看着它们行动,也还能支撑个半小时的乐趣,是到目前为止制作的可玩性最强的游戏……同样的,这个游戏也是一个具有充分扩展性的游戏。感染者会不会转化成僵尸?人类能不能拿到武器反击僵尸?僵…

    2025年6月22日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号