Remoting首次用时偏长问题

先说我遇到的问题,我需要访问多个服务器的一个相同的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

原文地址:https://www.cnblogs.com/kevin-Y/p/3309234.html