小编use*_*864的帖子

抛出的异常似乎阻止了其他线程

背景/简介:

非常奇怪的问题,在抛出特定异常时,似乎所有其他线程都停止执行,直到处理异常为止.该应用程序是一个代理服务器,通过一个tcp套接字池连接多个请求(在任何一个时间范围内数百个),它通过socks连接连接到N个其他代理客户端.通过传递委托而不是使用异常,尝试使用相同的不良性能结果.

正常操作下的日志片段:

14:40:17.700 [PrxSvc:9058] --> [200] 1217ms http://redact.example.com   
14:40:17.700 [PrxSvc:9058] C-DEBUG:C                
14:40:17.716 [PrxSvc:9058] --> [200] 1098ms http://redact.example.com           
14:40:17.716 [PrxSvc:9058] C-DEBUG:C             
14:40:17.727 [PrxSvc:9054] --> [200] 905ms http://redact.example.com   
14:40:17.727 [PrxSvc:9054] C-DEBUG:C         
14:40:17.778 [PrxSvc:9050] --> [200] 453ms http://redact.example.com           
14:40:17.778 [PrxSvc:9050] C-DEBUG:C         
14:40:17.781 [Unnamed Thread] C-DEBUG:A          
14:40:17.781 [Unnamed Thread] C-DEBUG:B         
14:40:17.796 [PrxSvc:9058] --> [200] 652ms http://redact.example.com             
14:40:17.796 [PrxSvc:9058] C-DEBUG:C                
14:40:17.807 [PrxSvc:9056] --> [200] 1555ms http://redact.example.com              
14:40:17.807 [PrxSvc:9056] C-DEBUG:C           
14:40:17.816 [PrxSvc:9064] --> [200] 396ms http://redact.example.com                 
Run Code Online (Sandbox Code Playgroud)

套接字池重用与域的连接,但是当外部服务器关闭连接时,我们显然没有收到任何通知.当我们尝试通过TcpSocksHandler.TaskHandler方法重用此连接时:

socks.Send(buffer, 0, rcv, SocketFlags.None);
socks.Receive(new byte[1], 0, 1, …
Run Code Online (Sandbox Code Playgroud)

c# sockets windows proxy exception

5
推荐指数
1
解决办法
176
查看次数

标签 统计

c# ×1

exception ×1

proxy ×1

sockets ×1

windows ×1