回答編集履歴
5
追記
test
CHANGED
@@ -33,3 +33,5 @@
|
|
33
33
|
|
34
34
|
|
35
35
|
等、色々考慮しないといけない事も増えますので注意が必要です。
|
36
|
+
|
37
|
+
また、中断まで考慮するなら、File.Copy を FileStream での読み書きに変更したほうが良いかもしれません。
|
4
少し修正
test
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
|
9
9
|
```C#
|
10
10
|
|
11
|
-
var c
|
11
|
+
var copyTask = Task.Run(() =>
|
12
12
|
|
13
13
|
{
|
14
14
|
|
@@ -20,11 +20,9 @@
|
|
20
20
|
|
21
21
|
});
|
22
22
|
|
23
|
-
|
24
|
-
|
25
23
|
```
|
26
24
|
|
27
|
-
上記サンプルコードは、重そうな処理だけ
|
25
|
+
上記サンプルコードは、重そうな処理だけTaskで起動する例ですが、実際は
|
28
26
|
|
29
27
|
- 既にTaskを実行中か
|
30
28
|
|
3
少し修正
test
CHANGED
@@ -32,4 +32,6 @@
|
|
32
32
|
|
33
33
|
- Task中の例外処理
|
34
34
|
|
35
|
+
|
36
|
+
|
35
37
|
等、色々考慮しないといけない事も増えますので注意が必要です。
|
2
追記
test
CHANGED
@@ -3,3 +3,33 @@
|
|
3
3
|
|
4
4
|
|
5
5
|
実行時間が長時間掛かるメソッドをUIスレッドで実行すると、メソッドが終了するまでフォーム全体の処理が停止しますので、Task.Run等を使用して非同期で実行する必要があります。
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
```C#
|
10
|
+
|
11
|
+
var cmdTask = Task.Run(() =>
|
12
|
+
|
13
|
+
{
|
14
|
+
|
15
|
+
const string commandMount = @"/c net use \servername\kyouyu password /user:user /PERSISTENT:NO";
|
16
|
+
|
17
|
+
ExecuteCommand(commandMount);
|
18
|
+
|
19
|
+
CopyFiles(@".\test.txt", @"\servername\kyouyu\testbigfile");
|
20
|
+
|
21
|
+
});
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
```
|
26
|
+
|
27
|
+
上記サンプルコードは、重そうな処理だけ単純に別タスクを起動する例ですが、実際は
|
28
|
+
|
29
|
+
- 既にTaskを実行中か
|
30
|
+
|
31
|
+
- Taskをどうやって中断させるか
|
32
|
+
|
33
|
+
- Task中の例外処理
|
34
|
+
|
35
|
+
等、色々考慮しないといけない事も増えますので注意が必要です。
|
1
少し修正
test
CHANGED
@@ -1 +1,5 @@
|
|
1
|
+
> ダウンロード処理を走らせない場合は、一定時間放置しても、ディスプレイ電源offや強制ログオフは起こらなかったんですが、ダウンロード処理を走らせますと、プログラムが応答なしとなり
|
2
|
+
|
3
|
+
|
4
|
+
|
1
5
|
実行時間が長時間掛かるメソッドをUIスレッドで実行すると、メソッドが終了するまでフォーム全体の処理が停止しますので、Task.Run等を使用して非同期で実行する必要があります。
|