Foxtable(狐表)用户栏目专家坐堂 → 有关全局代码的启动时间与项目事件的顺序!


  共有14988人关注过本帖树形打印复制链接

主题:有关全局代码的启动时间与项目事件的顺序!

帅哥哟,离线,有人找我吗?
cpayinyuan
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
有关全局代码的启动时间与项目事件的顺序!  发帖心情 Post By:2010/6/4 14:49:00 [只看该作者]

   另一个贴子里我提到使用加密狗的问题,当时贺老师说的一句话非常有道理,就是第一次检测加密狗最好在BeforeOpenProject事件中,因为这时候项目还没有启动,这时候检测若没有加密狗则不启动项目,就不用浪费不必要的时间了。若把检测加密狗放在AfterOpenProject事件中,等到所有的表和窗口都打开了再检测加密狗,这时候发现电脑上没有狗再退出项目,就白白浪费了半天的时间。

    现在我遇到的问题是,加密狗需要外带的DLL文件,由于不是.net 的DLL文件,所以需要在“全局代码”中声明这个DLL文件中的函数。经过我的测试,只有在AfterOpenProject事件中,全局代码才开始起使用,加密狗相关的函数才可以使用。而在BeforeOpenProject事件中、BeforeConnectOuterDataSource事件中,全局代码都不起作用,所以这时候也无法使用加密狗的函数检测加密狗。

 

   我的建法是:能否让狐表在打开项目时,把执行全局代码的顺序朝前提一下,在打开项目时(在连接外部数据源之前),能够首先执行全局代码,这样就可以解决这个问题了。或者,贺老师能够提供其他的解决办法也行!


 回到顶部
帅哥,在线噢!
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251397 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/6/4 15:12:00 [只看该作者]

这个肯定和顺序无关的,是程序集引用的问题,我看看有办法否。

 回到顶部
帅哥哟,离线,有人找我吗?
cpayinyuan
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2010/6/4 15:33:00 [只看该作者]

以下是引用狐狸爸爸在2010-6-4 15:12:00的发言:
这个肯定和顺序无关的,是程序集引用的问题,我看看有办法否。

     希望贺老师能够想出办法。如果全局代码不好在在前面运行,能否再另外提供一个接口,允许狐表在打开项目之前,先运行一段代码(我在这段代码中声明加密狗所有的函数)。

    因为我的项目启动时加载的东西比较多,所以启动比较慢,差不多要1分钟左右,现在每次都到打开项目的最后再检测加密狗,非常不方便,深受其害啊。

 


 回到顶部
帅哥,在线噢!
狐狸爸爸
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251397 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/6/5 9:46:00 [只看该作者]

下次可以了

 回到顶部
帅哥哟,离线,有人找我吗?
cpayinyuan
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2010/6/5 12:36:00 [只看该作者]

以下是引用狐狸爸爸在2010-6-5 9:46:00的发言:
下次可以了

Very Good!


 回到顶部
帅哥哟,离线,有人找我吗?
程兴刚
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2010/6/6 23:21:00 [只看该作者]

还要考虑一个问题,如果用户在全局代码中所写的代码引用的某一下东西只有在项目打开后才生成的时候,在BeforeOpenProject事件之前执行,将会报错,所以,只建议在这一步增加一个类似的全局代码的模块,原全局代码不动!

     (也许修改帮助,多增加判断能够得以解决)


 回到顶部
帅哥哟,离线,有人找我吗?
cpayinyuan
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2010/6/13 18:10:00 [只看该作者]

    经过改进,现在的版本中全局代码可以提前执行了,方便了很多。但是,现在我想在输入用户名(狐表本身的用户名,不是自定义登录窗口的用户名)之后,加载DataTable、Table、窗口、和全局变量之前,设计代码,判断登录的用户名和其他条件,若不符合一定的条件,就退出项目(或者说不允许进入项目)。在哪个事件中进行设置?

 

    例如:在进入项目的时候,首先检测加密狗,若电脑上有加密狗,进入项目;若没有加密狗,允许开发者进入项目,但不允许其他操作员进入项目。

 

   BeforeOpenProject事件可以禁止进入项目,但这个事件中无法判断登录用户是谁;

   BeforeConnectOuterDataSource事件中,好像不能退出项目;

  AfterOpenProject事件中当然可以判断用户名,也可以退出项目,但这时候再来判断用户名和条件,发现不符合条件退出项目,白白浪费了大半天的时间。其他几个项目事件好像也都不合适,不是判断不了用户名,就是不能退出项目,或者是浪费了大量的不必要的登录时间。

 

   那么究竟该在哪个事件中设计代码呢?能否想办法解决这个问题。

 

 

[此贴子已经被作者于2010-6-13 18:23:32编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
czy
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33957 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/6/13 20:18:00 [只看该作者]

按道理应该放在LoadUserSetting事件中。

 回到顶部
帅哥哟,离线,有人找我吗?
cpayinyuan
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2010/6/13 21:22:00 [只看该作者]

以下是引用czy在2010-6-13 20:18:00的发言:
按道理应该放在LoadUserSetting事件中。

这个事件在打开所有的表和窗口之后,所以,用这个事件同样会浪费时间,好似不是一个最优选择。

 

[此贴子已经被作者于2010-6-13 21:25:10编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
czy
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33957 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/6/13 22:31:00 [只看该作者]

以下是引用cpayinyuan在2010-6-13 21:22:00的发言:

这个事件在打开所有的表和窗口之后,所以,用这个事件同样会浪费时间,好似不是一个最优选择。

 

[此贴子已经被作者于2010-6-13 21:25:10编辑过]

 

这样的话现在恐怕没有办法实现了。


 回到顶部
总数 17 1 2 下一页