App.xaml.cs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. using MongoDB.Bson.Serialization;
  2. using MongoDB.Bson.Serialization.Serializers;
  3. using System.Configuration;
  4. using System.Data;
  5. using System.Diagnostics;
  6. using System.Text;
  7. using System.Text.RegularExpressions;
  8. using System.Windows;
  9. namespace ShakerManger
  10. {
  11. /// <summary>
  12. /// Interaction logic for App.xaml
  13. /// </summary>
  14. public partial class App : Application
  15. {
  16. System.Threading.Mutex mutex;
  17. protected override void OnStartup(StartupEventArgs e)
  18. {
  19. bool ret = false;
  20. mutex = new Mutex(true, typeof(ShakerManger.MainWindow).FullName, out ret);
  21. if(!ret)
  22. {
  23. Tools.MessageBoxHelper.Error("已有一个程序实例运行");
  24. Environment.Exit(0);
  25. }
  26. if(e.Args.Length>0 && e.Args[0] == "Init" )
  27. {
  28. var result = Sql.Default.Connect();
  29. if(result)
  30. {
  31. int count = 8;
  32. var models = Sql.Default.Find<Shaker.Model.ShakerControlModel>(x=>true).ToList();
  33. if(models.Count<count)
  34. {
  35. Enumerable.Range(0, count - models.Count).ToList()
  36. .Select(x => new Shaker.Model.ShakerControlModel())
  37. .ToList()
  38. .ForEach(x=>
  39. {
  40. Sql.Default.Insert(x);
  41. Thread.Sleep(100);
  42. });
  43. }
  44. var user = new Shaker.Model.UserModel()
  45. {
  46. UserName = "user",
  47. PassWord= Shaker.Model.GlobalVariable.MD5Encrypt32("123456"),
  48. UserType = Shaker.Model.UserType.ClientUser,
  49. };
  50. Tools.MessageBoxHelper.Info("初始化完成");
  51. }
  52. else
  53. {
  54. Tools.MessageBoxHelper.Info($"连接数据库{Sql.Default.IP}:{Sql.Default.Port}失败");
  55. }
  56. App.Current.Shutdown();
  57. return;
  58. }
  59. Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
  60. BsonSerializer.RegisterSerializer(DateTimeSerializer.LocalInstance);
  61. BsonSerializer.RegisterSerializer(new ObjectSerializer(ObjectSerializer.AllAllowedTypes));
  62. View.SplashScreenView view = new View.SplashScreenView();
  63. view.Topmost = false;
  64. view.DataContext = new ViewModel.SplashScreenViewModel();
  65. view.Show();
  66. MainWindow window = new MainWindow();
  67. ViewModel.MainWindowViewModel.Default.InitedAction = () =>
  68. {
  69. view.Visibility = Visibility.Collapsed;
  70. window.Top = 0;
  71. window.Left = 0;
  72. window.Topmost = false;
  73. window.ShowInTaskbar = true;
  74. window.Show();
  75. view.Close();
  76. };
  77. Task.Run(()=> ViewModel.MainWindowViewModel.Default.Init());
  78. }
  79. protected override void OnExit(ExitEventArgs e)
  80. {
  81. ViewModel.MainWindowViewModel.Default.CloseCommand.Execute(null);
  82. base.OnExit(e);
  83. }
  84. public void Restart()
  85. {
  86. System.Diagnostics.Process.Start(Application.ResourceAssembly.Location.Replace(".dll", ".exe"));
  87. Application.Current.Shutdown();
  88. }
  89. }
  90. }