質問編集履歴

2

試したこと追記

2020/09/10 10:50

投稿

hirotamasami
hirotamasami

スコア5

test CHANGED
File without changes
test CHANGED
@@ -88,6 +88,156 @@
88
88
 
89
89
 
90
90
 
91
+ ・非同期で再生時間大量読込
92
+
93
+ ```C#
94
+
95
+ public sealed partial class PlayerPage : Page
96
+
97
+ {
98
+
99
+
100
+
101
+ readonly Player _player = Player.Instance;
102
+
103
+ List<TimeSpan> = _soundPlayTimeList;
104
+
105
+
106
+
107
+ public PlayerPage()
108
+
109
+ {
110
+
111
+ this.InitializeComponent();
112
+
113
+ }
114
+
115
+
116
+
117
+ protected override void OnNavigatedTo(NavigationEventArgs e)
118
+
119
+ {
120
+
121
+ SetSoundTimeList();
122
+
123
+ }
124
+
125
+
126
+
127
+ public async Task SetSoundTimeList()
128
+
129
+ {
130
+
131
+ List<string> fileNameList = await FileAccess.GetSoundFileNameList(); // 使用するファイル名を全て取得。このメソッドではファイル名を非同期で一気に取得はしてません
132
+
133
+ _soundPlayTimeList = (await Task.WhenAll(fileNameList.Select(x => _player.GetDuration(x)))).ToList(); //ここが怪しい?
134
+
135
+ }
136
+
137
+
138
+
139
+ }
140
+
141
+
142
+
143
+
144
+
145
+ public class Player
146
+
147
+ {
148
+
149
+ public static player Instance { get; } = new player();
150
+
151
+
152
+
153
+ private readonly MediaPlayer _mediaPlayer = new MediaPlayer();
154
+
155
+ private MediaSource _mediaSource = null;
156
+
157
+
158
+
159
+ private async Task<string> GetPlayTime(string fileName)
160
+
161
+ {
162
+
163
+ TimeSpan time = await GetDuration(fileName);
164
+
165
+ return time.ToString(@"mm\:ss");
166
+
167
+ }
168
+
169
+
170
+
171
+ private async Task<TimeSpan> GetDuration(string fileName)
172
+
173
+ {
174
+
175
+ StorageFile outfile = await File.GetWavFileAsync(fileName); //対象の音声ファイルでStorageFileを取得する
176
+
177
+
178
+
179
+ MediaPlayer mp = new MediaPlayer();
180
+
181
+ MediaSource ms = MediaSource.CreateFromStorageFile(outfile);
182
+
183
+ MediaPlayer mp.Source = ms;
184
+
185
+
186
+
187
+ await Task.Delay(1000);
188
+
189
+ TimeSpan t = ((TimeSpan)ms.Duration);
190
+
191
+
192
+
193
+ mp.Dispose();
194
+
195
+ ms.Dispose();
196
+
197
+
198
+
199
+ return t;
200
+
201
+ }
202
+
203
+
204
+
205
+ private void SoundPlay(string fileName)
206
+
207
+ {
208
+
209
+ StorageFile outfile = await FilePath.GetWavFileAsync(fileName);
210
+
211
+
212
+
213
+ _mediaSource?.Dispose();
214
+
215
+ _mediaSource = MediaSource.CreateFromStorageFile(outfile);
216
+
217
+ _mediaPlayer.Source = _mediaSource;
218
+
219
+
220
+
221
+ _mediaPlayer.Play();
222
+
223
+ }
224
+
225
+ }
226
+
227
+ ```
228
+
229
+
230
+
231
+ ・複数種の端末で現象確認
232
+
233
+ 一応サーフェスとタフパッド(パナソニック製 FZ-M1)の2種類(タフパッドは3台)
234
+
235
+ で現象を確認しております
236
+
237
+ ※一時知人に借りていたものを使用したのでバージョンなどは不明
238
+
239
+
240
+
91
241
  ### 補足情報(FW/ツールのバージョンなど)
92
242
 
93
243
 

1

誤字修正

2020/09/10 10:50

投稿

hirotamasami
hirotamasami

スコア5

test CHANGED
File without changes
test CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  Visual Studio 2017で作成したUWPアプリを使用しているのですが、
10
10
 
11
- 使用中にタスクバーが点滅する現象が発生するのですが
11
+ 使用中にタスクバーが点滅する現象が発生しており
12
12
 
13
13
  タスクマネージャーを確認すると
14
14
 
@@ -16,7 +16,7 @@
16
16
 
17
17
  どうやら
18
18
 
19
- windows problem reportingがほぼ一定の間隔で
19
+ windows problem reportingや問題レポートがほぼ一定の間隔で
20
20
 
21
21
  繰り返し起動(実行?)しており、
22
22