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