先说我遇到的问题,我需要访问多个服务器的一个相同的Remoting方法,根据方法返回的结果决定优先使用某个服务器。

var _remoteFacade = Activator.GetObject(typeof(IAppCommonFacade), "tcp://" + ServerIp + ":10002/IAppCommonFacade") as IAppCommonFacade;
TimeSpan sp = DateTime.Now - start;
try
{
writeLog(ServerIp, "DetectServerStatus start...");
result = _remoteFacade.DetectServerStatus();
TimeSpan sp1 = DateTime.Now - start;
writeLog(ServerIp, string.Format("DetectServerStatus={0},获取接口用时{1},调用方法用时{2}", result,sp.TotalMilliseconds,sp1.TotalMilliseconds));
isCompleted = true;
}
catch
{
writeLog(ServerIp, ",DetectServerStatus error.");
}

于是我发现一个现象,第一个被调用的服务器用时大大超出其他服务器。强调一下,这与服务器IP没关系,以下日志22服务器用时多,如果95和22的先后换一个,那用时多的就是95.

[2013-09-09 08:53:31]:priorityServerChecker 192.168.1.22: DetectServerStatus start...
[2013-09-09 08:53:31]:call DetectServerStatus used 15.625 毫秒 .it's at tcp://192.168.1.22:10002/IAppCommonFacade
[2013-09-09 08:53:31]:priorityServerChecker 192.168.1.22: DetectServerStatus=0,获取接口用时0,调用方法用时315.625
[2013-09-09 08:53:31]:check server 192.168.1.22,完成检测,Reslut=0
[2013-09-09 08:53:31]:priorityServerChecker 192.168.1.95: DetectServerStatus start...
[2013-09-09 08:53:31]:call DetectServerStatus used 0 毫秒 .it's at tcp://192.168.1.95:10002/IAppCommonFacade
[2013-09-09 08:53:31]:priorityServerChecker 192.168.1.95: DetectServerStatus=0,获取接口用时0,调用方法用时15.625

我想到了是不是与dotnet的编译用时有关。因为是登录的界面,所以这半秒的时间是不能放过的,一定要消灭它。于是在界面Load时,在检测前增加一个后台线程,这里我称其为“线程B”,在“线程B”先调用一次第一个服务器。上面的第一次调用的问题确实解决了。我想确认一下自已的想法,于是在“线程B”里放日志检查用时,结果却让人摸不着头脑

“线程B”里用时:[2013-09-09 09:48:34]:check server 192.168.1.95,prepareCheckJob完成,用时31.25

检测线程用法:[2013-09-09 09:49:32]:priorityServerChecker 192.168.1.95: DetectServerStatus=0,用时406.25

难道这与ManualResetEvent有关?

2018-11-24补充
https://www.cnblogs.com/francis-gao/p/4912575.html

这里提出修改app.config

最新文章

  1. 详解Js中文件读取机制
  2. Andrew Ng机器学习公开课笔记 -- 支持向量机
  3. Visual Studio插件
  4. jQuery插件 -- Form表单插件jquery.form.js
  5. (转)java之多线程
  6. .net Quartz 服务 作业调度
  7. Django入门实践(一)
  8. 转:LR性能测试结果样例分析 测试结果分析
  9. vuex的使用
  10. js的七大设计原则--迪米特原则
  11. Python——threading模块(线程)
  12. Python求最大可能
  13. 小朋友学C语言(7)
  14. 开发人员常用的DOS命令
  15. Unity3D笔记七 GUILayout
  16. 个人整理的一些iOS Entitlements
  17. css的优先级和权重问题 以及!important优先级
  18. Mac shell使用技巧总结(转)
  19. FreeMarker配置详解
  20. Oracle sql 中的 ALL,ANY,SOME

热门文章

  1. 构造方法Constructor
  2. String 及其数组的相关问题
  3. mysql存储过程简介
  4. jquery的.submit
  5. frame中隐藏横向滚动条
  6. 第五百八十天 how can I 坚持
  7. iOS 解析json串
  8. SQL Server 2008中删除errorlog文件的方法
  9. LoadRunner ---思考时间设置
  10. oracle命令