日期:2014-05-16  浏览次数:20915 次

如何设计才能保证资源能释放?
代码中即没有使用suing也没有使用try catch 的情况下,如何设计Test类才能保证资源能释放?

class Program
    {
        public class Test : IDisposable
        {
            public void Start()
            {
                Console.WriteLine("资源占用中");
            }

            public int Operation(int a, int b)
            {
                Console.WriteLine(a + "/" + b);
                return a / b;
            }

            public void Dispose()
            {
                Console.WriteLine("已释放资源");
            }
        }

        static void Fun_1()
        {
            using (Test test = new Test())
            {
                test.Start();
                Console.WriteLine(test.Operation(20, 10));
                Console.WriteLine(test.Operation(20, 0));   // 这里发生异常,由于使用了using,可保证调用对象的Dispose方法释放资源。
            }
        }

        static void Fun_2()
        {
            Test test = new Test();
            test.Start();
            Console.WriteLine(test.Operation(20, 10));
            Console.WriteLine(test.Operation(20, 0));   // 这里发生异常,没有补货异常,导致Dispose方法未被执行,资源未释放。
            test.Dispose();
        }

        static void Main(string[] args)
        {
            try
            {
             &n