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