質問編集履歴
2
実現したいことを、詳細に書きました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -5,6 +5,7 @@
|
|
5
5
|
メソッドGetValueAsyncを作成したのですが、
|
6
6
|
GetValueAsync内のwhileループでCPU使用率がとても高くなってしまいます。
|
7
7
|
|
8
|
+
|
8
9
|
### 該当のソースコード
|
9
10
|
|
10
11
|
```csharp
|
@@ -73,9 +74,10 @@
|
|
73
74
|
|
74
75
|
```
|
75
76
|
|
76
|
-
### 補足
|
77
|
+
### 補足(実現したいこと)
|
77
78
|
barの値の取得に関してですが、
|
78
|
-
Btn_Click内でGetValueAsyncが呼ばれたタイミングのbarの値が取得できればそれでいいです。
|
79
|
+
~~Btn_Click内でGetValueAsyncが呼ばれたタイミングのbarの値が取得できればそれでいいです。~~
|
80
|
+
Btn_Click内でGetValueAsyncが呼ばれたタイミングのbarの値(ただし、barが更新されていなければ、更新されるまで待つ)を取得したいです。
|
79
81
|
|
80
82
|
|
81
83
|
### 解決策?
|
1
いただいた回答に基づいて、改良してみました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -53,7 +53,7 @@
|
|
53
53
|
|
54
54
|
詳しい方おられましたら、ご教授お願いいたします。
|
55
55
|
|
56
|
-
```
|
56
|
+
```csharp
|
57
57
|
private async Task<string> GetValueAsync()
|
58
58
|
{
|
59
59
|
var value = await Task.Run(async () =>
|
@@ -75,4 +75,26 @@
|
|
75
75
|
|
76
76
|
### 補足
|
77
77
|
barの値の取得に関してですが、
|
78
|
-
Btn_Click内でGetValueAsyncが呼ばれたタイミングのbarの値が取得できればそれでいいです。
|
78
|
+
Btn_Click内でGetValueAsyncが呼ばれたタイミングのbarの値が取得できればそれでいいです。
|
79
|
+
|
80
|
+
|
81
|
+
### 解決策?
|
82
|
+
|
83
|
+
いただいた回答に基づいて、コードを改良してみました。
|
84
|
+
|
85
|
+
```csharp
|
86
|
+
|
87
|
+
private readonly AutoResetEvent condition = new AutoResetEvent(false);
|
88
|
+
|
89
|
+
private async Task<string> GetValueAsync()
|
90
|
+
{
|
91
|
+
await Task.Run(() =>
|
92
|
+
{
|
93
|
+
condition.WaitOne();
|
94
|
+
});
|
95
|
+
return this._originaltext;
|
96
|
+
}
|
97
|
+
|
98
|
+
```
|
99
|
+
Hogehogeメソッドのとこには、
|
100
|
+
```this._foo = bar;```の下に、```condition.Set();```を記述。
|