我正在学习线程、任务和异步编码,并尝试将这些概念应用到我每天工作的 Web 窗体应用程序中。
到目前为止,我有:
- 像这样配置的服务参考:
更改了客户端调用
MyServiceClient msc = new MyServiceClient(); try { myData = msc.GetData(); msc.Close(); } catch (Exception) { msc.Abort(); throw; }
至
MyServiceClient msc = new MyServiceClient();
try
{
myData = msc.GetDataAsync().Result;
msc.Close();
}
catch (Exception)
{
msc.Abort();
throw;
}
我直接调用结果以在任务上隐式调用 .Wait() 并基本保持代码不变。
- 为了在执行 I/O 时释放应用程序池中的线程以进行其他工作,这样做是否正确?
- 我需要以不同的方式处理异常吗?
- Close() 和 Abort() 是否仍然必要且相关?