c#程序老卡顿怎么办,用本耗时监视程序吧
·
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using System.Diagnostics;
using System.Data;
using System.Diagnostics;
namespace MetroGraphApp
{
public class 耗时监视_防止卡死
{
public static Hashtable sudu_time_watchs = new Hashtable();
public static void v2_add_sudu_time_watch_and_reset(string watch_id)
{
Stopwatch pw1 = null;
if (!sudu_time_watchs.ContainsKey(watch_id))
{
pw1 = new Stopwatch();
sudu_time_watchs.Add(watch_id, pw1);
}
else
{
pw1 = sudu_time_watchs[watch_id] as Stopwatch;
pw1.Reset();
}
pw1.Start();
}
public static Hashtable max_sudu_times = new Hashtable();
public static long zong_max_sudu_times = 0;
public static void v2_init_sudu_time_watch()
{
zong_max_sudu_times = 0;
max_sudu_times = new Hashtable();
sudu_time_watchs = new Hashtable();
}
public static string get_sudu_haoshi_list()
{
Hashtable rttimezongs = max_sudu_times;
string rtt1 = "";
foreach (string kewy in rttimezongs.Keys)
{
rtt1 = rtt1 + kewy + "操作最大耗时:" + rttimezongs[kewy].ToString() + " ticks\r\n";
}
return rtt1+"----------------------------------\r\n";
}
public static DateTime last_save_time = DateTime.Now;
public static void save_per_times()
{
if ((DateTime.Now - last_save_time).TotalMilliseconds > 1000)
{
last_save_time = DateTime.Now;
zhongkaiKB0pc.Libs.file_rw fwww = new zhongkaiKB0pc.Libs.file_rw();
fwww.write_a_file(zhongkaiKB0pc.Libs.log.get_cur_path() + "err" + "/----------耗时list--------"+ ".txt", 耗时监视_防止卡死.get_sudu_haoshi_list()+"\r\n" + DateTime.Now.ToString() + "\r\n");
}
}
public static long v2_get_and_stop_sudu_time_watch(string watch_id)
{
Stopwatch pw1 = null;
if (sudu_time_watchs.ContainsKey(watch_id))
{
pw1 = sudu_time_watchs[watch_id] as Stopwatch;
pw1.Stop();
if (pw1.ElapsedTicks > zong_max_sudu_times)
{
zong_max_sudu_times = pw1.ElapsedTicks;
}
if (!max_sudu_times.Contains(watch_id))
{
max_sudu_times.Add(watch_id, pw1.ElapsedTicks);
}
else
{
long oldzo1 = (long)(max_sudu_times[watch_id]);
if (pw1.ElapsedTicks > oldzo1)
{
max_sudu_times[watch_id] = pw1.ElapsedTicks;
}
}
return pw1.ElapsedTicks;
}
return 0;
}
}
}
用法如下:
耗时监视_防止卡死.v2_add_sudu_time_watch_and_reset("bak_进度001");
bak_进度(is_Sandox1);//这个必须单线程里 bak_进度,不然不稳定!
耗时监视_防止卡死.v2_get_and_stop_sudu_time_watch("bak_进度001");
。。。。。。。。。。
耗时监视_防止卡死.save_per_times();
zhongkaiKB0pc.Libs.file_rw 改成你自己的IO写文件的代码类即可
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)