当在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();
    }
}

当在C#中引发异常时,调用服务的析构函数

不要使用析构函数,因为.net C#是托管语言

GC类在初始化任何类时自动调用,

使用。。。。,

尝试{Console.WriteLine("发生异常!");}catch(Execution ex){回来}尝试{Console.WriteLine("发生异常!");}捕获{}

块来解决此问题。不要使用析构函数。我认为它可能会帮助你

清理总是一件好事,除非在不需要的时候,如果它会给代码增加很多开销。

在您的情况下,我想您希望确保类在使用后被销毁,因为使用了非托管系统资源。在这种情况下,也许这个问题的答案会帮助你:

如果不使用非托管系统资源,则可以将清理工作留给垃圾收集器。