回答編集履歴
1
追記
answer
CHANGED
@@ -25,4 +25,26 @@
|
|
25
25
|
catch
|
26
26
|
{
|
27
27
|
}
|
28
|
+
```
|
29
|
+
|
30
|
+
---
|
31
|
+
`dataOperator.GetAllSourceDataAsync(this.SourcePath).Result`は、現在のスレッドをブロックするので、`await StorageFolder.GetFolderFromPathAsync(sourcePath.Main)`の完了後に元のスレッドに戻ることができなくて、デッドロックが発生してしまいます。`ConfigureAwait(false)`で元のスレッドに戻らないようにするか、そもそも`Result`ではなく、`await`を使うようにするかのどちらかの対応を行う必要があります。
|
32
|
+
|
33
|
+
```C#
|
34
|
+
public async Task<TargetFiles> GetAllSourceDataAsync(DirectoryPath sourcePath)
|
35
|
+
{
|
36
|
+
var folder = await StorageFolder.GetFolderFromPathAsync(sourcePath.Main).AsTask().ConfigureAwait(false);
|
37
|
+
var files = await folder.GetFilesAsync().AsTask().ConfigureAwait(false);
|
38
|
+
|
39
|
+
return new TargetFiles();
|
40
|
+
|
41
|
+
}
|
42
|
+
```
|
43
|
+
|
44
|
+
```C#
|
45
|
+
public async Task GetFileInfo()
|
46
|
+
{
|
47
|
+
|
48
|
+
var dataOperator = DependencyService.Get<IDataOperator>();
|
49
|
+
this.SourceAllData = await dataOperator.GetAllSourceDataAsync(this.SourcePath);
|
28
50
|
```
|