当在C#中引发异常时,调用服务的析构函数
本文关键字:调用 服务 析构函数 异常 当在 | 更新日期: 2023-09-27 18:28:42
我有一个WCF服务,它使用异常返回错误的结果。例如,当方法的参数错误时,会引发异常并向客户端发送异常,客户端会捕获该异常并显示其消息。我也使用FaultException。但问题是,当出现异常时,服务类的析构函数没有被调用。当发生异常时,我必须在析构函数中处理存储库。我该怎么做?
public class TestService : ITestService
{
private AccountReposiory _accountReposiory;
public TestService()
{
Console.WriteLine("Started!");
_accountReposiory = new AccountReposiory();
}
public void DoWork()
{
//Exception Occurred!;
throw new Exception("Some Exception");
//...
}
~TestService()
{
Console.WriteLine("Finished!");
_accountReposiory.Dipose();
}
}
不要使用析构函数,因为.net C#是托管语言
GC类在初始化任何类时自动调用,
使用。。。。,
尝试{Console.WriteLine("发生异常!");}catch(Execution ex){回来}尝试{Console.WriteLine("发生异常!");}捕获{}
块来解决此问题。不要使用析构函数。我认为它可能会帮助你
清理总是一件好事,除非在不需要的时候,如果它会给代码增加很多开销。
在您的情况下,我想您希望确保类在使用后被销毁,因为使用了非托管系统资源。在这种情况下,也许这个问题的答案会帮助你:
如果不使用非托管系统资源,则可以将清理工作留给垃圾收集器。