-
Notifications
You must be signed in to change notification settings - Fork 1
/
AppShell.cs
98 lines (84 loc) · 3 KB
/
AppShell.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
// This is an open source non-commercial project. Dear PVS-Studio, please check it.
// PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
using Microsoft.VisualBasic.ApplicationServices;
using Npgsql;
using SCADA;
using System.IO.Ports;
using System.Net.Sockets;
class SingleInstanceAppShell : WindowsFormsApplicationBase
{
public SingleInstanceAppShell()
{
this.IsSingleInstance = true;
}
public SCADA.AppWPF AppWPF
{
get;
private set;
}
protected override bool OnStartup(StartupEventArgs eventArgs)
{
AppWPF = new SCADA.AppWPF();
AppWPF.InitializeComponent();
AppWPF.Run();
return false;
}
[System.STAThreadAttribute()]
public static void Main(string[] args)
{
SingleInstanceAppShell appShell = null;
try
{
appShell = new SingleInstanceAppShell();
appShell.Run(args);
}
catch(System.Exception ex)
{
if (((MainWindow)appShell.AppWPF.MainWindow != null))
{
if (((MainWindow)appShell.AppWPF.MainWindow).CollectionTCPEthernetObject != null)
{
foreach (EthernetObject client in ((MainWindow)appShell.AppWPF.MainWindow).CollectionTCPEthernetObject)
{
if (client.TcpClient != null)
{
client.TcpClient.Close();
}
}
}
if (((MainWindow)appShell.AppWPF.MainWindow).CollectionUDPEthernetObject != null)
{
foreach (EthernetObject client in ((MainWindow)appShell.AppWPF.MainWindow).CollectionUDPEthernetObject)
{
if (client.UdpClient != null)
{
client.UdpClient.Close();
}
}
}
if (((MainWindow)appShell.AppWPF.MainWindow).CollectionSerialPortThread != null)
{
foreach (SerialPort serialPort in ((MainWindow)appShell.AppWPF.MainWindow).CollectionSerialPortThread)
{
if (serialPort != null)
{
serialPort.Close();
}
}
}
if (((MainWindow)appShell.AppWPF.MainWindow).CollectionSQLObject != null)
{
foreach (SQLObject connection in ((MainWindow)appShell.AppWPF.MainWindow).CollectionSQLObject)
{
if (connection.SQL != null)
{
connection.SQL.Close();
connection.SQL.Dispose();
}
}
}
}
System.Windows.MessageBox.Show(ex.Message);
}
}
}