using CommonFunc; using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Diagnostics; using System.Linq; using System.Windows; using ThriftCommon; using XGL.Models; using XGL.Data; using System.Threading.Tasks; using XGLFinishPro.Views; namespace XGL { /// /// App.xaml 的交互逻辑 /// public partial class App : Application { private System.Threading.Mutex mutex; public App() { string name = Process.GetCurrentProcess().MainModule.ModuleName.Replace(".exe", ""); //禁止多开 mutex = new System.Threading.Mutex(true, name, out bool ret); if (!ret) { MessageBox.Show("已有一个程序实例运行","提示", MessageBoxButton.OK, MessageBoxImage.Warning); Environment.Exit(0); } //UI线程未捕获异常处理事件(UI主线程) this.DispatcherUnhandledException += App_DispatcherUnhandledException; //非UI线程未捕获异常处理事件(例如自己创建的一个子线程) AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; //Task线程内未捕获异常处理事件 TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException;//Task异常 Common.ApplicationDicStr = System.IO.Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName); Common.ThriftConfigIp = ConfigurationManager.AppSettings["thriftIp"]; Common.ThriftConfigPort = ConfigurationManager.AppSettings["thriftPort"]; Common.thriftBoxPort = ConfigurationManager.AppSettings["thriftBoxPort"]; Common.FormBoardThriftPort = ConfigurationManager.AppSettings["FormBoardThriftPort"]; //Common.LocatHostMac = Common.GetLocationHostMac(); //Common.HostIp = Common.GetLocationHostAddress(); //Common.PortName = ConfigurationManager.AppSettings["PortName"]; //Common.HostIp = "192.168.38.46"; //Common.LocatHostMac = "00:30:18:00:3A:E1"; //Common.stoplineset = Convert.ToInt32(ConfigurationManager.AppSettings["stopline"]); //Common.PortNamestop = ConfigurationManager.AppSettings["PortNamestop"]; //Common.DefaultPosition = ConfigurationManager.AppSettings["DefaultPosition"]; //Common.CSPosition = ConfigurationManager.AppSettings["CSPosition"]; Common.LocalIPAddress = Common.IPAddress(); Common.PostType = ConfigurationManager.AppSettings["PostType"]; Common.LineCode = ConfigurationManager.AppSettings["LineCode"]; Common.LineId = ConfigurationManager.AppSettings["LineId"]; Common.BoardRefresh = Convert.ToInt32(ConfigurationManager.AppSettings["BoardRefresh"]); Common.TakeOffRefresh = Convert.ToInt32(ConfigurationManager.AppSettings["TakeOffRefresh"]); Common.EmptyRefresh = Convert.ToInt32(ConfigurationManager.AppSettings["EmptyRefresh"]); //try //{ // using (basedata_lineinfoDB lineinfoDB = new basedata_lineinfoDB()) // { // Common.Lineinfo = lineinfoDB.GetModel(Common.LineId,Common.PostType); // } //} //catch (Exception ex) //{ //} #region 自动更新 //try //{ // string name = Process.GetCurrentProcess().ProcessName; // XGL.AutoUpdate.WebService WS = new XGL.AutoUpdate.WebService(); // string RVersion = WS.getFileVersion(); // //string LVersion = FileVersionInfo.GetVersionInfo(name + ".exe").FileVersion; // string LVersion = FileVersionInfo.GetVersionInfo("XGL.exe").FileVersion; // int result = string.Compare(LVersion, RVersion); // if (result < 0) // { // Process.Start("AutoUpdate.exe"); // System.Environment.Exit(System.Environment.ExitCode); // } //} //catch //{ //} Window w; //switch (Common.PostType) //{ // ////上线 // //case "1": // // w = new FormItem.FormBoard(); // // w.Show(); // // break; // //case "2"://排空 // // w = new FormItem.FormEmpty(); // // w.Show(); // // break; // //case "0"://下线 // // w = new FormItem.FormTakeOff(); // // w.Show(); // // break; //} #endregion } void App_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e) { try { HandleException(e.Exception); } catch (Exception ex) { HandleException(ex); } finally { e.Handled = true; } } private static void HandleException(Exception ex) { Logger log = new Logger(); log.Log(ex.ToString()); } //非UI线程未捕获异常处理事件(例如自己创建的一个子线程) private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) { try { var exception = e.ExceptionObject as Exception; if (exception != null) { HandleException(exception); } } catch (Exception ex) { HandleException(ex); } finally { //ignore } } private static void TaskScheduler_UnobservedTaskException(object sender, UnobservedTaskExceptionEventArgs e) { try { var exception = e.Exception as Exception; if (exception != null) { HandleException(exception); } } catch (Exception ex) { HandleException(ex); } finally { e.SetObserved(); } } } }