質問編集履歴

4

ソースの変更

2018/11/22 03:43

投稿

warks1
warks1

スコア12

test CHANGED
File without changes
test CHANGED
@@ -50,7 +50,87 @@
50
50
 
51
51
  ```C#
52
52
 
53
+ # using は省略
54
+
55
+
56
+
57
+ namespace WindowsFormsApp
58
+
59
+ {
60
+
61
+ public partial class Form1 : Form
62
+
63
+ {
64
+
65
+ // キャンセレーショントークンソース
66
+
67
+ private CancellationTokenSource CancellationTokenSource;
68
+
69
+ //タイマーの宣言
70
+
71
+ System.Windows.Forms.Timer timer2 = new System.Windows.Forms.Timer();
72
+
73
+ public Form1()
74
+
75
+ {
76
+
77
+ InitializeComponent();
78
+
79
+ //ボタン
80
+
81
+ button1.Enabled = true;
82
+
83
+ button2.Enabled = false;
84
+
85
+ //タイマー
86
+
87
+ loop(Main_loop);
88
+
89
+ }
90
+
91
+ public void button1_Click(object sender, EventArgs e)
92
+
93
+ {
94
+
95
+ //開始ボタンは有効・停止ボタンは無効
96
+
97
+ button1.Enabled = false;
98
+
99
+ button2.Enabled = true;
100
+
101
+
102
+
103
+ //タイマーのインターバル設定
104
+
105
+ timer2.Interval = intVal * 60000;
106
+
107
+ //タイマー有効化
108
+
109
+ timer2.Enabled = true;
110
+
111
+ }
112
+
53
- private void loop(object sender, EventArgs e)
113
+ private void button2_Click(object sender, EventArgs e)
114
+
115
+ {
116
+
117
+ //タイマーの停止
118
+
119
+ timer2.Enabled = false;
120
+
121
+
122
+
123
+ //開始ボタンは有効・停止ボタンは無効
124
+
125
+ button1.Enabled = true;
126
+
127
+ button2.Enabled = false;
128
+
129
+ }
130
+
131
+
132
+
133
+ public bool OpenWebWait()
54
134
 
55
135
  {
56
136
 
@@ -58,13 +138,85 @@
58
138
 
59
139
  {
60
140
 
141
+ //読み込み完了まで待つ
142
+
143
+ while (webBrowser1.IsBusy || webBrowser1.ReadyState != WebBrowserReadyState.Complete)
144
+
145
+ {
146
+
147
+ //無処理
148
+
149
+ System.Windows.Forms.Application.DoEvents();
150
+
151
+ System.Threading.Thread.Sleep(300);
152
+
153
+ }
154
+
155
+
156
+
157
+ return true;
158
+
159
+ }
160
+
161
+ catch (Exception)
162
+
163
+ {
164
+
165
+ return false;
166
+
167
+ }
168
+
169
+ }
170
+
171
+
172
+
173
+
174
+
175
+ //numericUpDown1 * 60秒 でループするタイマー
176
+
177
+ public void loop(EventHandler eventHandler)
178
+
179
+ {
180
+
181
+ timer2.Tick += new EventHandler(eventHandler);
182
+
183
+ timer2.Enabled = false;
184
+
185
+ }
186
+
187
+ private void Main_loop(object sender, EventArgs e)
188
+
189
+ {
190
+
191
+ try
192
+
193
+ {
194
+
195
+ //TLS1.2を使用・SSL自己証明書のスルー
196
+
197
+ ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(OnRemoteCertificateValidationCallback);
198
+
199
+ ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
200
+
201
+ //ファイルの保存先指定
202
+
203
+ string filepath = (保存先);
204
+
205
+
206
+
207
+ //label1の表示変更
208
+
61
-          label1.Text = "開始";
209
+ label1.Text = "接続中";
62
210
 
63
211
  label1.Refresh();
64
212
 
213
+
214
+
215
+
216
+
217
+ //接続
218
+
65
- webBrowser1.Visible = true;
219
+ webBrowser1.Navigate(接続先URL);
66
-
67
- webBrowser1.Navigate("https://" + textBox01.Text + "." + textBox02.Text + "." + textBox03.Text + "." + textBox04.Text);
68
220
 
69
221
 
70
222
 
@@ -74,80 +226,90 @@
74
226
 
75
227
 
76
228
 
77
-
229
+ // クッキーを取得する。
230
+
231
+ string cookieStr = webBrowser1.Document.Cookie;
232
+
233
+
234
+
235
+ // WebClientを生成する。
78
236
 
79
237
  WebClient wc = new WebClient();
80
238
 
81
239
  Encoding enc = Encoding.UTF8;
82
240
 
241
+
242
+
243
+ // WebClientのヘッダ設定を行う。
244
+
83
- wc.DownloadFile("https://" + textBox01.Text + "." + textBox02.Text + "." + textBox03.Text + "." + textBox04.Text + "/txax_.txt", filepath);
245
+ wc.Headers[HttpRequestHeader.Cookie] = cookieStr;
246
+
247
+
248
+
249
+ //label1の表示変更
250
+
251
+ label1.Text = "ダウンロード中";
252
+
253
+ label1.Refresh();
254
+
255
+
256
+
257
+ //ダウンロード
258
+
259
+ wc.DownloadFile(ダウンロードURL);
84
260
 
85
261
  wc.Dispose();
86
262
 
263
+
264
+
265
+
266
+
267
+
268
+
87
269
  }
88
270
 
89
271
  catch (Exception w) when (w is ObjectDisposedException || w is InvalidOperationException || w is ArgumentOutOfRangeException || w is COMException)
90
272
 
91
273
  {
92
274
 
275
+ //label1の表示変更
276
+
93
277
  label1.Text = "接続エラー";
94
278
 
95
279
  label1.Refresh();
96
280
 
281
+
282
+
283
+ //Console.WriteLine(w.Message);
284
+
285
+ //1秒待つ
286
+
287
+ Task.Delay(1000).Wait();
288
+
289
+ }
290
+
291
+ catch (Exception w) when (w is COMException)
292
+
293
+ {
294
+
97
295
  Console.WriteLine(w.Message);
98
296
 
99
- Task.Delay(1000).Wait();
100
-
101
- }
102
-
103
- catch (Exception w) when (w is COMException)
104
-
105
- {
106
-
107
- Console.WriteLine(w.Message);
108
-
109
297
  Application.Exit();
110
298
 
111
299
  }
112
300
 
113
301
  }
114
302
 
115
- public bool OpenWebWait()
303
+
116
-
117
- {
304
+
118
-
119
- try
305
+
120
-
121
- {
306
+
122
-
123
- //読み込み完了まで待つ
124
-
125
- while (webBrowser1.IsBusy || webBrowser1.ReadyState != WebBrowserReadyState.Complete)
126
-
127
- {
128
-
129
- //無処理
130
-
131
- System.Windows.Forms.Application.DoEvents();
132
-
133
- System.Threading.Thread.Sleep(100);
134
-
135
- }
307
+ }
136
-
137
-
138
-
139
- return true;
308
+
140
-
141
- }
309
+ }
142
-
143
- catch (Exception)
310
+
144
-
145
- {
146
-
147
- return false;
148
-
149
- }
311
+ }
150
-
151
- }
312
+
313
+
152
314
 
153
315
  ```

3

追加

2018/11/22 03:43

投稿

warks1
warks1

スコア12

test CHANGED
File without changes
test CHANGED
@@ -112,4 +112,42 @@
112
112
 
113
113
  }
114
114
 
115
+ public bool OpenWebWait()
116
+
117
+ {
118
+
119
+ try
120
+
121
+ {
122
+
123
+ //読み込み完了まで待つ
124
+
125
+ while (webBrowser1.IsBusy || webBrowser1.ReadyState != WebBrowserReadyState.Complete)
126
+
127
+ {
128
+
129
+ //無処理
130
+
131
+ System.Windows.Forms.Application.DoEvents();
132
+
133
+ System.Threading.Thread.Sleep(100);
134
+
135
+ }
136
+
137
+
138
+
139
+ return true;
140
+
141
+ }
142
+
143
+ catch (Exception)
144
+
145
+ {
146
+
147
+ return false;
148
+
149
+ }
150
+
151
+ }
152
+
115
153
  ```

2

質問の変更

2018/11/22 01:31

投稿

warks1
warks1

スコア12

test CHANGED
File without changes
test CHANGED
@@ -25,6 +25,26 @@
25
25
  原因・理由や改善方法等、出来るだけ初心者向けに回答していただけますと幸いです。
26
26
 
27
27
  お手数おかけしますが回答お願いいたします。
28
+
29
+
30
+
31
+ 追記
32
+
33
+ --------------------------------------
34
+
35
+ どんな例外処理が発生しても、その処理は終了して再度時間がきた際には1から「loop」の処理を開始したいです。
36
+
37
+ 例えば、物理的にLANケーブルが抜けていた場合、webbrowserコントロールでもDownloadFileでも例外が発生すると思います。その処理は停止します。
38
+
39
+ 途中でLANケーブルを挿しなおせば再度繋がるようになり、その後からタイマーの時間が来た際は例外処理が発生しないと思いますのでその際は普通に処理するという流れが良いです。
40
+
41
+
42
+
43
+ 現状では挿しなおした後も、例外処理が発生する状態です。
44
+
45
+ -------------------------------------------------
46
+
47
+
28
48
 
29
49
 
30
50
 

1

変更

2018/11/22 01:29

投稿

warks1
warks1

スコア12

test CHANGED
File without changes
test CHANGED
@@ -54,6 +54,12 @@
54
54
 
55
55
 
56
56
 
57
+
58
+
59
+ WebClient wc = new WebClient();
60
+
61
+ Encoding enc = Encoding.UTF8;
62
+
57
63
  wc.DownloadFile("https://" + textBox01.Text + "." + textBox02.Text + "." + textBox03.Text + "." + textBox04.Text + "/txax_.txt", filepath);
58
64
 
59
65
  wc.Dispose();