gpt4 book ai didi

.net - 何时使用异步模式处理 wcf 对象

转载 作者:行者123 更新时间:2023-12-04 19:24:07 26 4
gpt4 key购买 nike

假设我从同步版本开始:

 using(var svc = new ServiceObject()) {
var result = svc.DoSomething();
// do stuff with result
}

我结束了
var svc = new ServiceObject();
svc.BeginDoSomething(async => {
var result = svc.EndDoSomething(async);
svc.Dispose();
// do stuff with result
},null);

1) 这是调用 Dispose() 的正确位置吗?

2) 有没有办法使用 using() ?

最佳答案

来自 Rotem Bloom 的博客:
http://caught-in-a-web.blogspot.com/2008/05/best-practices-how-to-dispose-wcf.html

最佳实践:如何处理 WCF 客户端

不建议对 Dispose WCF 客户端使用 using 语句(在 Visual Basic 中使用)。这是因为 using 语句的结尾可能会导致可能掩盖您可能需要了解的其他异常的异常。


using (CalculatorClient client = new CalculatorClient())
{
...
} // this line might throw

Console.WriteLine("Hope this code wasn't important, because it might not happen.");

The correct way to do it is:
try
{
client.Close();
}
catch (CommunicationException)
{
client.Abort();
}
catch (TimeoutException)
{
client.Abort();
}
catch
{
client.Abort();
throw;
}

关于.net - 何时使用异步模式处理 wcf 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1009208/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com