今天,在调试WinForm程序的时候,每次单步运行到Json序列化对象语句时,VS就停止工作,重新启动。代码片段如下:
//2017.10.11 xnn 格式化日期时间DateTime 否则会出现2017-09-29T14:42:10
IsoDateTimeConverter convert = new IsoDateTimeConverter();
convert.DateTimeFormat = "yyyy-MM-dd HH:mm:ss";
(断点处)string json_task = JsonConvert.SerializeObject(task, convert);//任务json串
string json_devices = JsonConvert.SerializeObject(devices_list);//设备信息json串
出现这种问题,以为是电脑中病毒,或者是VS环境被破坏了。结果就修复和重装VS,然而并不能解决问题。后来猜想是不是程序本身的问题。为排除VS环境问题,运行了另外的WinForm程序,其中也有类似以上Json序列化代码语句,结果调试一路畅通,事实证明问题还是应该在程序本身上。
通过反复设断点调试,发现task对象属性DT_FixInfos(是一个DataTable)有数据,大概有十几万条数据。然后就清空了数据表,结果调试通过。
//2017.11.8 xnn 清空数据,或者置为null,否则Json序列化对象是,导致VS停止工作。原因可能DT_FixInfos数据量太大
task.DT_FixInfos = null;
task.DT_SatelliteInfos = null;
//2017.10.11 xnn 格式化日期时间DateTime 否则会出现2017-09-29T14:42:10
IsoDateTimeConverter convert = new IsoDateTimeConverter();
convert.DateTimeFormat = "yyyy-MM-dd HH:mm:ss";
(断点处)string json_task = JsonConvert.SerializeObject(task, convert);//任务json串
string json_devices = JsonConvert.SerializeObject(devices_list);//设备信息json串
正常运行以上代码是没有问题的,不知道是不是task.DT_FixInfos数据量太大,导致程序单步调试到以上断点处VS崩掉。