Files
lserp_cs_5.0/插件库/Lskj.Main_新疆/Lskj.Main/Program.cs
T
2026-07-10 15:25:05 +08:00

186 lines
7.4 KiB
C#

using CommonLib;
using Lskj.Main.main;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Lskj.Main
{
public abstract class SingleInstance
{
[DllImport("Kernel32.dll", CharSet = CharSet.Auto)]
private static extern IntPtr OpenMutex(
uint dwDesiredAccess, // access
int bInheritHandle, // inheritance option
string lpName // object name
);
[DllImport("Kernel32.dll", CharSet = CharSet.Auto)]
private static extern IntPtr CreateMutex(
IntPtr lpMutexAttributes, // SD
int bInitialOwner, // initial owner
string lpName // object name
);
/// <summary>
/// 用来判断一个程序是否已经运行
/// </summary>
/// <param name="appId">程序名称,防止重复</param>
/// <returns>如果程序第一次运行True,否则返回False</returns>
public static bool IsFirst(string appId)
{
bool ret = false;
if (OpenMutex(0x1F0001, 0, appId) == IntPtr.Zero)
{
CreateMutex(IntPtr.Zero, 0, appId);
ret = true;
}
return ret;
}
}
static class Program
{
public static Bitmap m_bitMain = null;
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
/*
if (!SingleInstance.IsFirst("lserp30_instance"))
{
MessageBox.Show("程序已经在运行!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
*/
//处理未捕获的异常
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
//处理UI线程异常
Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
ClientMain.Instance.StartApp();
}
/// <summary>
///这就是我们要在发生未处理异常时处理的方法,我这是写出错详细信息到文本,如出错后弹出一个漂亮的出错提示窗体,给大家做个参考
///做法很多,可以是把出错详细信息记录到文本、数据库,发送出错邮件到作者信箱或出错后重新初始化等等
///这就是仁者见仁智者见智,大家自己做了。
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
{
try
{
//string str = "";
//string strDateInfo = "出现应用程序未处理的异常:" + DateTime.Now.ToString() + "\r\n";
//Exception error = e.Exception as Exception;
//if (error != null)
//{
// str = string.Format(strDateInfo + "异常类型:{0}\r\n异常消息:{1}\r\n异常信息:{2}\r\n",
// error.GetType().Name, error.Message, error.StackTrace);
//}
//else
//{
// str = string.Format("应用程序线程错误:{0}", e);
//}
//MessageBox.Show("发生致命错误,请及时联系作者![" + str + "]", "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
string str = "";
string strDateInfo = "出现应用程序未处理的异常:" + DateTime.Now.ToString() + "\r\n";
Exception error = e.Exception as Exception;
if (error != null)
{
str = string.Format(strDateInfo + "异常类型:{0}\r\n异常消息:{1}\r\n异常信息:{2}\r\n",
error.GetType().Name, error.Message, error.StackTrace);
//str = string.Format(strDateInfo + "异常类型:{0}\r\n异常消息:{1}",
// error.GetType().Name, error.Message);
}
else
{
str = string.Format("应用程序线程错误:{0}", e);
}
writeLog(str);
}
catch (Exception)
{
}
//if (DBConfig.Instance.Debug == "0")
//{
// MessageBox.Show("配置错误,请联系管理员.\r\n"+str);
//}
//else
//{
// MessageBox.Show("发生错误,请及时联系作者![" + str + "]", "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
//}
}
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
//string str = "";
//Exception error = e.ExceptionObject as Exception;
//string strDateInfo = "出现应用程序未处理的异常:" + DateTime.Now.ToString() + "\r\n";
//if (error != null)
//{
// str = string.Format(strDateInfo + "Application UnhandledException:{0};\n\r堆栈信息:{1}", error.Message, error.StackTrace);
//}
//else
//{
// str = string.Format("Application UnhandledError:{0}", e);
//}
//MessageBox.Show("发生致命错误,请停止当前操作并及时联系作者![" + str + "]", "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
string str = "";
Exception error = e.ExceptionObject as Exception;
string strDateInfo = "出现应用程序未处理的异常:" + DateTime.Now.ToString() + "\r\n";
if (error != null)
{
str = string.Format(strDateInfo + "Application UnhandledException:{0};\n\r堆栈信息:{1}", error.Message, error.StackTrace);
str = string.Format(strDateInfo + "Application UnhandledException:{0}", error.Message);
}
else
{
str = string.Format("Application UnhandledError:{0}", e);
}
writeLog(str);
if (DBConfig.Instance.Debug == "0")
{
MessageBox.Show("配置错误,请联系管理员.");
}
else
{
MessageBox.Show("发生错误,请停止当前操作并及时联系作者![" + error.StackTrace+ "]", "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
/// <summary>
/// 写文件
/// </summary>
/// <param name="str"></param>
static void writeLog(string str)
{
if (!Directory.Exists("ErrLog"))
{
Directory.CreateDirectory("ErrLog");
}
using (StreamWriter sw = new StreamWriter(@"ErrLog\ErrLog.txt", true))
{
sw.WriteLine(str);
sw.WriteLine("---------------------------------------------------------");
sw.Close();
}
}
}
}