2013-03-11 123 views
0

(新手到異步/等待)異步等待鏈接如何停止

我正在鏈接一個Initialize()函數,這是鑽到許多類。
每個類都有這個initialize方法:

public async Task Initialize(string fileName) 

當我收到的最後一節課,是我該怎麼辦?
我想運行一個簡單的功能,如:

public async Task Initialize(string dllPath) 
{   
    await PrintThePath(dllPath); 
} 

public void PrintThePath(string dllPath) 
{ 
    Console.WriteLine(dllPath); 
} 

Ofcourse我收到「不能等待避免」錯誤。
所以我做錯了,邏輯上。

有人能解釋一下嗎?

+1

你確實有什麼要「等待」嗎?聽起來你不應該使用'async'。 – SLaks 2013-03-11 15:43:02

+0

我有,這是開始,稍後在此init將實例化一個WCF客戶端誰將與WCF服務進行通信。並且WCF服務將花費至少幾秒來完成操作 – ilansch 2013-03-11 15:45:51

回答

3

在這種情況下,只需直接撥打PrintThePath而不需要await,因爲它是一種簡單的同步方法。

public async Task Initialize(string dllPath) 
{ 
    PrintThePath(dllPath); 
} 

此樣本看,雖然似乎沒有理由來標記Initializeasync。它不會執行任何async工作,也不是override方法。本身就存在無需紀念這一方法爲async(編譯器會警告你這個)

編輯

OP指定他們建立與警告視爲錯誤和需要維持這種模式,即使Initialize實際上並不是await。這裏是壓制警告的代碼

#pragma warning disable 1998 
    public async Task Initialize(string dllPath) 
    { 
     PrintThePath(dllPath); 
    } 
#pragma warning restore 1998 
+0

問題是,我將警告視爲錯誤並且無法編譯 – ilansch 2013-03-11 15:46:38

+0

@ilansch:然後您需要禁止警告。 – SLaks 2013-03-11 15:52:42

+0

它不是一個警告,因爲項目屬性設置爲:將所有警告視爲錯誤。所以這是一個衝突:(因爲我不能阻止一個錯誤 – ilansch 2013-03-11 16:09:40