/// <summary>
/// 应用程序的主入口点。
/// </summary>
public static ApplicationContext context; [STAThread]
private static void Main()
{
try
{
//处理未捕获的异常
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
//处理UI线程异常
Application.ThreadException += Application_ThreadException;
//处理非UI线程异常
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; var aProcessName = Process.GetCurrentProcess().ProcessName;
if ((Process.GetProcessesByName(aProcessName)).GetUpperBound() > )
{
MessageBox.Show(@"系统已经在运行中,如果要重新启动,请从进程中关闭...", @"系统警告", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
else
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false); var sp = new SplashForm(); //create splash screen
sp.Show(); //show splash screen
context = new ApplicationContext();
context.Tag = sp;
Application.Idle += Application_Idle; //注册程序运行空闲去执行主程序窗体相应初始化代码
Application.Run(context);
}
}
catch (Exception ex)
{
LogHelper.Log(ex);
MessageBox.Show("系统出现未知异常,请重启系统!");
}
} //初始化等待处理函数
private static void Application_Idle(object sender, EventArgs e)
{
Application.Idle -= Application_Idle;
if (context.MainForm == null)
{
var mw = new Login();
//YYQTestForm mw = new YYQTestForm(); context.MainForm = mw;
var sp = (SplashForm) context.Tag;
sp.Close(); //关闭启动窗体
mw.Show(); //启动主程序窗体
}
} ///<summary>
/// 这就是我们要在发生未处理异常时处理的方法,我这是写出错详细信息到文本,如出错后弹出一个漂亮的出错提示窗体,给大家做个参考
/// 做法很多,可以是把出错详细信息记录到文本、数据库,发送出错邮件到作者信箱或出错后重新初始化等等
/// 这就是仁者见仁智者见智,大家自己做了。
///</summary>
///<param name="sender"> </param>
///<param name="e"> </param>
private static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
{
var ex = e.Exception;
if (ex != null)
{
LogHelper.Log(ex);
} MessageBox.Show("系统出现未知异常,请重启系统!");
} private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
var ex = e.ExceptionObject as Exception;
if (ex != null)
{
LogHelper.Log(ex);
} MessageBox.Show("系统出现未知异常,请重启系统!");
}

最新文章

  1. phongap、APICloud、ionic等app开发平台你都知道吗?
  2. lua的corroutine学习
  3. Mac前端抓包小工具Charles4.0下载
  4. url rewrite优化url的可读性
  5. ios 环境配置网址
  6. LeetCode29 Divide Two Integers
  7. apache开源项目--ZooKeeper
  8. HTML5储存
  9. python自学笔记(九)python练习题
  10. SSL交互过程
  11. mybatis中#和$符号的区别(转)
  12. Postgresql/Greenplum中将数字转换为字符串TO_CHAR函数前面会多出一个空格
  13. Linux根目录下各个目录的用途及含义
  14. 内联元素于与块元素的转换 相对定位、绝对定位以及fixed定位 Z轴覆盖
  15. poj1637 Sightseeing tour(混合图欧拉回路)
  16. UE.getEditor(&#39;editor&#39;)
  17. Gym 101775J Straight Master(差分数组)题解
  18. 学习concurrency programming进展
  19. 极简版 卸载 home 扩充 根分区--centos7 xfs 文件格式
  20. react常用命令

热门文章

  1. 北京Uber优步司机奖励政策(10月5日~10月11日)
  2. 06003_redis在Linux上的安装
  3. 海思NB-IOT的SDK看门狗的使用
  4. python 终极篇 --- django 视图系统
  5. 看图写树 (Undraw the Trees UVA - 10562)
  6. 复合词 (Compund Word,UVa 10391)
  7. py3.6+anaconda下安装opencv3
  8. 由一个hash字符串生成多个子hash字符串
  9. gossip版本raft算法实现
  10. Asp.net之数组应用