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

回答編集履歴

9

久々に見たらコードが明らかにコンパイルエラーなので、直しました。

2020/02/18 05:11

投稿

BluOxy
BluOxy

スコア2663

answer CHANGED
@@ -33,8 +33,6 @@
33
33
  string url = "http://******"; // post先
34
34
  string json = "{\"age\":\"44歳\",\"name\":\"大泉 洋\"}"; // 送信するJSON
35
35
 
36
- string responseData = "";
37
-
38
36
  // リクエスト送信して、タスクの返りを待つ
39
37
  var responseData = await sendRequest (url, json);
40
38
  if (responseData.Length == 0) {

8

コメントがずれてて気になる。(そもそもコメントを消したいが、掲示されたコードなので残しておく)

2020/02/18 05:11

投稿

BluOxy
BluOxy

スコア2663

answer CHANGED
@@ -35,7 +35,7 @@
35
35
 
36
36
  string responseData = "";
37
37
 
38
-   // リクエスト送信して、タスクの返りを待つ
38
+ // リクエスト送信して、タスクの返りを待つ
39
39
  var responseData = await sendRequest (url, json);
40
40
  if (responseData.Length == 0) {
41
41
  Console.Write ("失敗");

7

awaitから受け取る値が間違っていたので修正

2019/11/19 03:18

投稿

BluOxy
BluOxy

スコア2663

answer CHANGED
@@ -36,13 +36,11 @@
36
36
  string responseData = "";
37
37
 
38
38
    // リクエスト送信して、タスクの返りを待つ
39
- var task = await sendRequest (url, json);
39
+ var responseData = await sendRequest (url, json);
40
- // レスポンスを取得
41
- responseData = task.Result;
42
40
  if (responseData.Length == 0) {
43
41
  Console.Write ("失敗");
44
42
  }
45
43
 
46
- var task2 = await sendRequest (url, json);
44
+ var responseData2 = await sendRequest (url, json);
47
45
  }
48
46
  ```

6

追記

2019/11/19 03:15

投稿

BluOxy
BluOxy

スコア2663

answer CHANGED
@@ -23,7 +23,11 @@
23
23
  });
24
24
  ```
25
25
  ---
26
+
27
+ `ContinueWith`の代わりに`await`を使えばネストを深くさせずに書けます。
26
- [非同期 Main](https://ufcpp.net/study/csharp/structured/miscentrypoint/#async-main)
28
+ `await`を`Main`メソッドで使うには[非同期 Main](https://ufcpp.net/study/csharp/structured/miscentrypoint/#async-main)にする必要があります。
29
+ 下記コードは環境がないため、イメージで書きました。誤りがあればコメントをお願いします。
30
+
27
31
  ```C#
28
32
  static async Task Main () {
29
33
  string url = "http://******"; // post先

5

追記

2019/11/19 03:06

投稿

BluOxy
BluOxy

スコア2663

answer CHANGED
@@ -21,4 +21,24 @@
21
21
  Console.Write("失敗");
22
22
  }
23
23
  });
24
+ ```
25
+ ---
26
+ [非同期 Main](https://ufcpp.net/study/csharp/structured/miscentrypoint/#async-main)
27
+ ```C#
28
+ static async Task Main () {
29
+ string url = "http://******"; // post先
30
+ string json = "{\"age\":\"44歳\",\"name\":\"大泉 洋\"}"; // 送信するJSON
31
+
32
+ string responseData = "";
33
+
34
+   // リクエスト送信して、タスクの返りを待つ
35
+ var task = await sendRequest (url, json);
36
+ // レスポンスを取得
37
+ responseData = task.Result;
38
+ if (responseData.Length == 0) {
39
+ Console.Write ("失敗");
40
+ }
41
+
42
+ var task2 = await sendRequest (url, json);
43
+ }
24
44
  ```

4

文章の修正

2019/11/19 02:45

投稿

BluOxy
BluOxy

スコア2663

answer CHANGED
@@ -9,7 +9,7 @@
9
9
 
10
10
  非同期で待機しているということは、`sendRequest(url, json).ContinueWith(~)`を呼び出した元のスレッドはレスポンスを待たずに処理を続行しますので、大体はレスポンスを受け取る前に`if(responseData.Length == 0)`の処理が実行されると思います。
11
11
 
12
- レスポンスで受け取った値は同じタスクの中で参照するようにしてください。
12
+ レスポンスで受け取った値はそのタスクの中だけで参照するようにしてください。
13
13
  ```C#
14
14
    // リクエスト送信して、タスクの返りを待つ
15
15
  sendRequest(url, json).ContinueWith(

3

文章の修正

2019/11/18 08:28

投稿

BluOxy
BluOxy

スコア2663

answer CHANGED
@@ -1,15 +1,15 @@
1
- 下記の非同期処理はレスポンスが返ってくるまで**非同期で**待機しています。
1
+ 下記のタスクはレスポンスが返ってくるまで**非同期で**待機しています。
2
2
  ```C#
3
3
  (task) =>
4
- {
4
+ {
5
- // レスポンスを取得
5
+ // レスポンスを取得
6
- responseData = task.Result;
6
+ responseData = task.Result;
7
- }
7
+ }
8
8
  ```
9
9
 
10
10
  非同期で待機しているということは、`sendRequest(url, json).ContinueWith(~)`を呼び出した元のスレッドはレスポンスを待たずに処理を続行しますので、大体はレスポンスを受け取る前に`if(responseData.Length == 0)`の処理が実行されると思います。
11
11
 
12
- レスポンスで受け取った値は同じ非同期処理の中で参照するようにしてください。
12
+ レスポンスで受け取った値は同じタスクの中で参照するようにしてください。
13
13
  ```C#
14
14
    // リクエスト送信して、タスクの返りを待つ
15
15
  sendRequest(url, json).ContinueWith(

2

文章の修正

2019/11/18 08:28

投稿

BluOxy
BluOxy

スコア2663

answer CHANGED
@@ -1,4 +1,4 @@
1
- 下記の非同期処理はレスポンスが返ってくるまで待機しています。
1
+ 下記の非同期処理はレスポンスが返ってくるまで**非同期で**待機しています。
2
2
  ```C#
3
3
  (task) =>
4
4
  {
@@ -7,7 +7,7 @@
7
7
  }
8
8
  ```
9
9
 
10
- 非同期で待機しているということは、sendRequest(url, json).ContinueWith()を呼び出した元のスレッドはレスポンスを待たずに続行しますので、大体はレスポンスを受け取る前に`if(responseData.Length == 0)`の処理が実行されると思います。
10
+ 非同期で待機しているということは、`sendRequest(url, json).ContinueWith(~)`を呼び出した元のスレッドはレスポンスを待たずに処理を続行しますので、大体はレスポンスを受け取る前に`if(responseData.Length == 0)`の処理が実行されると思います。
11
11
 
12
12
  レスポンスで受け取った値は同じ非同期処理の中で参照するようにしてください。
13
13
  ```C#

1

文章の修正

2019/11/18 08:27

投稿

BluOxy
BluOxy

スコア2663

answer CHANGED
File without changes