1)由于以前的函数求值超时,函数求值被禁用。必须继续执行才能重新启用函数求值:
这是因为调试时会自动对Local/Watch等窗口里面(或鼠标停留所在)的变量求值,为了防止用户写的程序错误(比如死循环),系统有一个超时限制,如果某个属性的get中做了很复杂的操作(而不是简单地返回一个私有变量的话),就有可能超过这个时间限制(如果strPage很大的话,你的正则运算就很可能会超时)。
可以禁用自动求值的功能:
工具 -> 选项 -> 调试 -> 常规 -> 启用属性求值和其他隐式函数调用
去掉前面打勾,不过这样就不会对属性变量自动求值了。
http://msdn.microsoft.com/en-us/library/ms234762%28VS.80%29.aspx
http://blogs.msdn.com/greggm/archive/2004/02/04/67766.aspx
VS里可以设置。
2)IIS的线程数限制问题
任何一个版本的win2003的iis6对线程都是有限制的。
可以在machin.config中修改maxWorkerThreads和maxIoThreads的值。
不过最好不要设置得太大了,否则cpu对线程的管理将浪费大量资源。
在IIS管理里,找到网站节点,右击打开属性页,去性能页,确认没有设置限制或设置的连接数很大
如果连接数超过设置的限制,会出现service unavailable的提示,但如果没有设限,连接数很大,请求队列满的时候,就会出现server too busy的提示
3)System.TimeoutException: 请求通道在等待 00:01:00 以后答复时超时。增加传递给请求调用的超时值,或者增加绑定上的 SendTimeout 值
1)首先保证客户端每次建立的连接在使用完成后进行关闭.即调用Close()方法,
否则此连接会在设置的会话(一般为10分钟)后才自动关闭.期间任何客户端也无法使用此服务.
2)如果默认的连接数不能满足客户端的需要,可以增加连接数.配置文件如下:
<serviceThrottling maxConcurrentCalls="20" maxConcurrentSessions="20"
maxConcurrentInstances="30" />
说明:maxConcurrentCalls :最大并发数,默认为16
maxConcurrentSessions :最大的会话数,主要针对于PerSession的情况,默认为10
maxConcurrentInstances:最大实例数,默认为26
4) 主子线程问题.
Thread.Join().
注意在Winform中,如果要等待子线程完成后才继续执行,则不能在线程中调用主线程的方法,
因为这样会造成线程调用死锁。