当我注意到用于执行WaitOrTimerCallback操作的大量额外线程时,我正在对我的项目的关键部分进行性能测试。
仔细观察后,我可以看到这些是由我的ASMX客户端代理类生成的,用于远程服务器上的操作。
我的印象是,这些使用IO完成端口,就像我的所有其他异步IO调用一样。
是否可以让ASMX或WCF代理客户端使用IO完成端口?如果不是 - 真的有什么意义?
[UPDATE] 该项目使用的是ASMX代理客户端。看起来他们正在使用普通的线程池来注册WaitOrTimerCallback。我现在正在使用WCF代理客户端。这些不会产生额外的线程,所以我只能假设他们正在使用所需的IO完成端口。
ASMX代理类是使用Visual Studio 2008创建的。我已将以下行添加到项目文件中:“WebReference_EnableLegacyEventingModel> true”由于ASMX客户端的当前风格默认情况下未启用异步。
答案 0 :(得分:2)
我不能代表ASMX,但WCF肯定会这样做(和你一样,如果ASMX没有,我会感到惊讶)。您是否可以获得调用堆栈以确保它们确实在网络调用中被阻止(而不是其他一些用户代码)?