teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

5

追記

2020/05/26 00:37

投稿

退会済みユーザー
answer CHANGED
@@ -15,4 +15,5 @@
15
15
  - Taskをどうやって中断させるか
16
16
  - Task中の例外処理
17
17
 
18
- 等、色々考慮しないといけない事も増えますので注意が必要です。
18
+ 等、色々考慮しないといけない事も増えますので注意が必要です。
19
+ また、中断まで考慮するなら、File.Copy を FileStream での読み書きに変更したほうが良いかもしれません。

4

少し修正

2020/05/26 00:37

投稿

退会済みユーザー
answer CHANGED
@@ -3,15 +3,14 @@
3
3
  実行時間が長時間掛かるメソッドをUIスレッドで実行すると、メソッドが終了するまでフォーム全体の処理が停止しますので、Task.Run等を使用して非同期で実行する必要があります。
4
4
 
5
5
  ```C#
6
- var cmdTask = Task.Run(() =>
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

少し修正

2020/05/26 00:15

投稿

退会済みユーザー
answer CHANGED
@@ -15,4 +15,5 @@
15
15
  - 既にTaskを実行中か
16
16
  - Taskをどうやって中断させるか
17
17
  - Task中の例外処理
18
+
18
19
  等、色々考慮しないといけない事も増えますので注意が必要です。

2

追記

2020/05/26 00:12

投稿

退会済みユーザー
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

少し修正

2020/05/26 00:12

投稿

退会済みユーザー
answer CHANGED
@@ -1,1 +1,3 @@
1
+ > ダウンロード処理を走らせない場合は、一定時間放置しても、ディスプレイ電源offや強制ログオフは起こらなかったんですが、ダウンロード処理を走らせますと、プログラムが応答なしとなり
2
+
1
3
  実行時間が長時間掛かるメソッドをUIスレッドで実行すると、メソッドが終了するまでフォーム全体の処理が停止しますので、Task.Run等を使用して非同期で実行する必要があります。