回答編集履歴
1
投稿が欠けていました。
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キーワードをプロシージャ名に付加しておきましょうということですよね?
|