2017-09-23 140 views
-3

我現在有代碼看起來像這樣:轉換異步方法,以非異步

private async Task<ListFolderResult> ListFolder(DropboxClient client, string path) 
{ 
    Console.WriteLine("--- Files ---"); 
    var list = await client.Files.ListFolderAsync(path); 

    return list; 
} 

,被稱爲是這樣的:

var list = await ListFolder(client, path); 

我想更改代碼,以便調用看起來是這樣的:

var list = ListFolder(client, path); 

和等待移動到ListFolder方法裏面。

+0

距離'ListFolder'除去'異步/ await'並添加等待:'client.Files.ListFolderAsync(路徑).Result'或'client.Files.ListFolderAsync(路徑).Wait()' –

+0

如果你想發表一個完整的代碼作爲答案,我會接受它並刪除我的答案。 –

+0

也許下來的選民可能會被打擾發表評論,爲什麼這是一個壞問題? –

回答

-2

這在控制檯應用程序中適用於我,但如果有人發佈了更一般的答案,我將非常樂意刪除此答案。

private ListFolderResult ListFolder(DropboxClient client, string path) 
{ 
    Console.WriteLine("--- Files ---"); 
    var list = client.Files.ListFolderAsync(path); 
    list.Wait(); 

    return list.Result; 
} 
+0

如果這個答案有問題然後請發表評論或張貼另一個答案。 –

+0

建議在大多數情況下(除了控制檯或單元測試)保證死鎖的代碼沒有良好的警告,這使得這個建議很糟糕的答案。 (忽略這樣的事實,即有更多的更好的答案如何同步調用異步代碼) –

+1

BTW:'return client.Files.ListFolderAsync(path).Result'就足夠了。無需*等待*。由於現在它是一個線路功能,不需要它是一個單獨的功能 – Eser