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

回答編集履歴

1

投稿が欠けていました。

2021/08/17 08:46

投稿

K_Satr
K_Satr

スコア7

answer CHANGED
@@ -2,14 +2,31 @@
2
2
 
3
3
  今回のasync/awaitの使用についてまとめますと、
4
4
  プロシージャにasyncキーワードを使用するとプロシージャ内で
5
- ①同期関数を使用して同期処理をしても問題ない。通常の同期処理動作になる。
5
+ ①同期関数を使用して同期処理をしても問題ない。通常の同期処理動作になる。
6
6
  ②非同期関数の場合、非同期待ちが可能になる。
7
- ③同期サブルーチン/関数を非同期で待ちたいときは、
7
+ ③同期サブルーチン/同期関数を非同期で待ちたいときは、
8
8
  private async void button1_Click(object sender, EventArgs e)イベントプロシージャ内で
9
+
9
10
  5秒待ちの同期サブルーチンを非同期待ちしたいときは、
10
11
  ```
11
12
  private async void button1_Click(object sender, EventArgs e)
12
13
  {
13
14
  await Task.Run(() => { System.Threading.Thread.Sleep(5000); });
14
15
  }
15
- ```
16
+ ```
17
+ 5秒待ちの同期関数を非同期待ちして戻り値が必要なときは、
18
+ ```ここに言語を入力
19
+ private async void button1_Click(object sender, EventArgs e)
20
+ {
21
+ Task<int> Task_Proc = Task.Run(() => { return funSyncDelay(5000); });
22
+ await Task_Proc;
23
+ Console.WriteLine("Task_Proc={0}", Task_Proc.Result);
24
+ }
25
+ public int funSyncDelay(int nMillisecond)
26
+ {
27
+ System.Threading.Thread.Sleep(nMillisecond);
28
+ return 1;
29
+ }
30
+ ```
31
+ ということで、プロシージャ内で非同期待ちをする可能性があればひとまず
32
+ asyncキーワードをプロシージャ名に付加しておきましょうということですよね?