markus / FinalService / FinalServiceBase / KCOM_FinalServiceConsole / Program.cs @ 42d49521
이력 | 보기 | 이력해설 | 다운로드 (5.11 KB)
1 |
#if DEBUG |
---|---|
2 |
using KCOMDataModel.DataModel; |
3 |
#endif |
4 |
using System; |
5 |
using System.IO; |
6 |
using System.Reflection; |
7 |
using System.ServiceProcess; |
8 |
using log4net; |
9 |
using KCOM_FinalService.Common; |
10 |
using System.Runtime.InteropServices; |
11 |
using System.Runtime.Remoting.Channels.Tcp; |
12 |
using IFinalPDF; |
13 |
using KCOMDataModel.DataModel; |
14 |
|
15 |
namespace KCOM_FinalService.Console |
16 |
{ |
17 |
static class Program |
18 |
{ |
19 |
// https://msdn.microsoft.com/en-us/library/windows/desktop/ms686016.aspx |
20 |
[DllImport("Kernel32")] |
21 |
private static extern bool SetConsoleCtrlHandler(SetConsoleCtrlEventHandler handler, bool add); |
22 |
|
23 |
// https://msdn.microsoft.com/en-us/library/windows/desktop/ms683242.aspx |
24 |
private delegate bool SetConsoleCtrlEventHandler(CtrlType sig); |
25 |
|
26 |
private enum CtrlType |
27 |
{ |
28 |
CTRL_C_EVENT = 0, |
29 |
CTRL_BREAK_EVENT = 1, |
30 |
CTRL_CLOSE_EVENT = 2, |
31 |
CTRL_LOGOFF_EVENT = 5, |
32 |
CTRL_SHUTDOWN_EVENT = 6 |
33 |
} |
34 |
|
35 |
static void Main(string[] args) |
36 |
{ |
37 |
SetConsoleCtrlHandler(Handler, true); |
38 |
|
39 |
#if DEBUG |
40 |
sConnString = KCOMDataModel.Common.ConnectStringBuilder.KCOMConnectionString().ToString(); |
41 |
|
42 |
timer = new System.Timers.Timer(); |
43 |
timer.Interval = new TimeSpan(0, 0, 3).TotalMilliseconds; |
44 |
timer.Elapsed += Timer_Elapsed; |
45 |
//timer.Start(); |
46 |
#endif |
47 |
|
48 |
|
49 |
KCOM_FinalService.Program.Main(args); |
50 |
} |
51 |
static System.Timers.Timer timer; |
52 |
static string sConnString; |
53 |
static bool flag; |
54 |
|
55 |
static int count; |
56 |
|
57 |
private static void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) |
58 |
{ |
59 |
FINAL_PDF fINAL_PDF; |
60 |
|
61 |
if (flag) |
62 |
{ |
63 |
flag = false; |
64 |
|
65 |
fINAL_PDF= new FINAL_PDF() |
66 |
{ |
67 |
ID = CommonLib.Guid.shortGuid(), |
68 |
PROJECT_NO = "000000", |
69 |
DOCINFO_ID = "c8bc53f3-c35e-ed2e-3f46-3ed5f283625f", |
70 |
DOCUMENT_ID = "30000071", |
71 |
MARKUPINFO_ID = "stQAvNq1oZ8d90df431f7e5a1", |
72 |
CREATE_USER_ID = "doftech", |
73 |
TOTAL_PAGE = 1, |
74 |
CREATE_DATETIME = DateTime.Now, |
75 |
STATUS = (int)IFinalPDF.FinalStatus.Insert |
76 |
}; |
77 |
} |
78 |
else |
79 |
{ |
80 |
flag = true; |
81 |
fINAL_PDF = new FINAL_PDF() |
82 |
{ |
83 |
ID = CommonLib.Guid.shortGuid(), |
84 |
PROJECT_NO = "000000", |
85 |
DOCINFO_ID = "ad75e7a3-9cf7-7556-c98a-59563d436bd1", |
86 |
DOCUMENT_ID = "30000131", |
87 |
MARKUPINFO_ID = "MxlkRXDTnJ8d916a72ae2d7b9", |
88 |
CREATE_USER_ID = "doftech", |
89 |
TOTAL_PAGE = 90, |
90 |
CREATE_DATETIME = DateTime.Now, |
91 |
STATUS = (int)IFinalPDF.FinalStatus.Insert |
92 |
}; |
93 |
} |
94 |
|
95 |
using (KCOMEntities _entity = new KCOMEntities(sConnString)) |
96 |
{ |
97 |
_entity.AddToFINAL_PDF(fINAL_PDF); |
98 |
_entity.SaveChanges(); |
99 |
|
100 |
SetFinalPDF(fINAL_PDF.PROJECT_NO, fINAL_PDF.ID); |
101 |
}; |
102 |
|
103 |
count++; |
104 |
|
105 |
if(count > 100) |
106 |
{ |
107 |
timer.Stop(); |
108 |
} |
109 |
} |
110 |
|
111 |
public static void SetFinalPDF(string ProjectNo, string _finalID) |
112 |
{ |
113 |
RemFinalPDFObject remObj = null; |
114 |
TcpChannel chan = new TcpChannel(); |
115 |
|
116 |
try |
117 |
{ |
118 |
|
119 |
System.Runtime.Remoting.Channels.IChannel _ch = System.Runtime.Remoting.Channels.ChannelServices.GetChannel("tcp"); |
120 |
|
121 |
if (_ch == null) |
122 |
{ |
123 |
string _ChanID = null; |
124 |
_ChanID = chan.ChannelName; |
125 |
System.Runtime.Remoting.Channels.ChannelServices.RegisterChannel(chan, false); |
126 |
} |
127 |
|
128 |
remObj = (RemFinalPDFObject)Activator.GetObject(typeof(RemFinalPDFObject), "tcp://localhost:9092/remFinalPDF"); |
129 |
var result = remObj.SetFinalPDF(ProjectNo, _finalID); |
130 |
} |
131 |
catch (Exception ex) |
132 |
{ |
133 |
throw ex; |
134 |
} |
135 |
finally |
136 |
{ |
137 |
//remObj = null; |
138 |
//if (System.Runtime.Remoting.Channels.ChannelServices.GetChannel("tcp") != null) |
139 |
// System.Runtime.Remoting.Channels.ChannelServices.UnregisterChannel(chan); |
140 |
|
141 |
//GC.Collect(2); |
142 |
} |
143 |
} |
144 |
|
145 |
|
146 |
private static bool Handler(CtrlType signal) |
147 |
{ |
148 |
switch (signal) |
149 |
{ |
150 |
case CtrlType.CTRL_BREAK_EVENT: |
151 |
case CtrlType.CTRL_C_EVENT: |
152 |
case CtrlType.CTRL_LOGOFF_EVENT: |
153 |
case CtrlType.CTRL_SHUTDOWN_EVENT: |
154 |
case CtrlType.CTRL_CLOSE_EVENT: |
155 |
|
156 |
KCOM_FinalService.Program.service.Stop(); |
157 |
|
158 |
// TODO Cleanup resources |
159 |
Environment.Exit(0); |
160 |
return false; |
161 |
|
162 |
default: |
163 |
return false; |
164 |
} |
165 |
} |
166 |
} |
167 |
} |