回答編集履歴

1

追記

2020/04/03 16:00

投稿

f-miyu
f-miyu

スコア1625

test CHANGED
@@ -53,3 +53,47 @@
53
53
  }
54
54
 
55
55
  ```
56
+
57
+
58
+
59
+ ---
60
+
61
+ `dataOperator.GetAllSourceDataAsync(this.SourcePath).Result`は、現在のスレッドをブロックするので、`await StorageFolder.GetFolderFromPathAsync(sourcePath.Main)`の完了後に元のスレッドに戻ることができなくて、デッドロックが発生してしまいます。`ConfigureAwait(false)`で元のスレッドに戻らないようにするか、そもそも`Result`ではなく、`await`を使うようにするかのどちらかの対応を行う必要があります。
62
+
63
+
64
+
65
+ ```C#
66
+
67
+ public async Task<TargetFiles> GetAllSourceDataAsync(DirectoryPath sourcePath)
68
+
69
+ {
70
+
71
+ var folder = await StorageFolder.GetFolderFromPathAsync(sourcePath.Main).AsTask().ConfigureAwait(false);
72
+
73
+ var files = await folder.GetFilesAsync().AsTask().ConfigureAwait(false);
74
+
75
+
76
+
77
+ return new TargetFiles();
78
+
79
+
80
+
81
+ }
82
+
83
+ ```
84
+
85
+
86
+
87
+ ```C#
88
+
89
+ public async Task GetFileInfo()
90
+
91
+ {
92
+
93
+
94
+
95
+ var dataOperator = DependencyService.Get<IDataOperator>();
96
+
97
+ this.SourceAllData = await dataOperator.GetAllSourceDataAsync(this.SourcePath);
98
+
99
+ ```