当前位置:编程学习 > C#/ASP.NET >>

微软BUG: 发现VS2010调试模式类似BUG问题 比较有趣!

问题类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

namespace SNS_DCC
{
    /// <summary>
    /// 单例模式类, 请使用GetInstance 获取该类.
    /// </summary>
    [Serializable]
    public class MongoDBInfo
    {
        private static MongoDBInfo instance = new MongoDBInfo();
       public static int ss = 0;
        /// <summary>
        /// 禁止创建类
        /// </summary>
        private MongoDBInfo()
        {
        }
        /// <summary>
        /// 获取实例
        /// </summary>
        /// <returns></returns>
        public static MongoDBInfo GetInstance()
        {
            return instance;
        }

        private  DateTime identificationTime;

        private  Stack<string> blogsDBNameQueue=new Stack<string>();
        /// <summary>
        /// 博文数据库名队列
        /// </summary>
        public  Stack<string> BlogsDBNameQueue
        {
            get
            {
                GetPrepare();
                return this.blogsDBNameQueue;
            }
            //set
            //{
            //    //GetPrepare();
            //    //this.blogsDBNameQueue = value;
            //    //SetBackup();
            //}
        }

        public void GetPrepare()
        {
            if (!(this.identificationTime != null && DateTime.Compare(this.identificationTime, Convert.ToDateTime("2010-05-05")) > 0))
                DeSerializableNow();
        }

        public static void SetBackup()
        {
            SerializableNow();
        }

        /// <summary>
        /// 序列化
        /// </summary>
        public static void SerializableNow()
        {
            FileStream fileStream = new FileStream("MongoDBInfo.dat", FileMode.Create);
            BinaryFormatter b = new BinaryFormatter();
            b.Serialize(fileStream, instance);
            fileStream.Close();
        }

        /// <summary>
        /// 反序列化
        /// </summary>
        public static void DeSerializableNow()
        {
           
            if (System.IO.File.Exists("MongoDBInfo.dat"))
            {
                FileStream fileStream = new FileStream("MongoDBInfo.dat", FileMode.Open, FileAccess.Read, FileShare.Read);
                BinaryFormatter b = new BinaryFormatter();
                instance = b.Deserialize(fileStream) as MongoDBInfo;
                fileStream.Close();
                instance.identificationTime = DateTime.Now;
            }
        }
    }
}

前台调用: 

<%SNS_DCC.MongoDBInfo.GetInstance().BlogsDBNameQueue.Push("456"); %>

必须在程序第一次运行时候有用!



get
{
    GetPrepare();
    return this.blogsDBNameQueue;
}

加一个断点 跑到此处时this 是刚刚new的状态 new MongoDBInfo();
但是如果在每个方法中 加断点  你会发现 再次运行到此处 this 是从MongoDBInfo.dat 中读取的对象.
当然为了区别 是新new的还是读取的值 MongoDBInfo.dat  一定要是存有值得序列化文件
--------------------编程问答-------------------- 细心人啊  --------------------编程问答--------------------
引用 1 楼 terminator_lzq 的回复:
细心人啊


你试过没? 我试了好几次 都是这样的  不知道是不是很环境有关系
环境是 server 2003, VS2010
--------------------编程问答--------------------
引用 2 楼 henwang 的回复:
引用 1 楼 terminator_lzq 的回复:

细心人啊


你试过没? 我试了好几次 都是这样的  不知道是不是很环境有关系
环境是 server 2003, VS2010

你说的Server 2003 环境没试过
学习来了 楼主牛人啊   有发展 --------------------编程问答-------------------- 赚点分 没人来了 --------------------编程问答-------------------- 人来蹭分了。 --------------------编程问答-------------------- 我的环境是WIN7,好像无此现象 --------------------编程问答-------------------- 挺楼主,是个不错的问题,(*^__^*)  --------------------编程问答-------------------- 顶起。 --------------------编程问答--------------------
引用 6 楼 danceboy_520 的回复:
我的环境是WIN7,好像无此现象

您试过,么?  把代码发我 我看看. --------------------编程问答-------------------- 没看懂,划水了下
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,