C# 使用异步而不等待

C# 使用异步而不等待,c#,asynchronous,visual-studio-2012,async-await,c#-5.0,C#,Asynchronous,Visual Studio 2012,Async Await,C# 5.0,我想使函数异步,因此我只需添加async,如下所示: public async static void something(){ } 您可以看到它的返回类型是void。我只想异步调用这个函数而不阻塞,因为返回值是void,所以不需要await 但是VisualStudio2012无法编译这个,它说我错过了wait 请您提供一个示例,使函数async不使用wait我想您可能误解了async的功能。警告完全正确:如果您将方法标记为异步,但不在任何地方使用wait,则您的方法将不异步。如果调用它,该

我想使函数异步,因此我只需添加
async
,如下所示:

public async static void something(){
}
您可以看到它的返回类型是
void
。我只想异步调用这个函数而不阻塞,因为返回值是
void
,所以不需要
await

但是VisualStudio2012无法编译这个,它说我错过了
wait


请您提供一个示例,使函数
async
不使用
wait

我想您可能误解了
async
的功能。警告完全正确:如果您将方法标记为异步,但不在任何地方使用
wait
,则您的方法将不异步。如果调用它,该方法中的所有代码都将同步执行


此外,您应该尽量避免使用
async void
方法,因为它们会使异常处理变得困难。

async
在调用方法时是否使方法本身异步,如果方法中没有
等待
?正如上面的示例,如果我调用
something()
,它会阻止当前线程吗?是的,如果在
something()
中有一些长时间运行的代码(并且没有
wait
),那么它会阻止线程。这就是警告试图告诉您的。
async
并不能让您的方法神奇地不阻塞。如果您想在另一个线程上运行一些代码,请使用
Task.run()
。哦,明白了,我误解了concert,async标记该方法将使用async调用并不意味着它本身是异步的。@Patrick然后您可以使用
Task.run()
在另一个线程上运行它。更有趣的是,当Resharper在其主体@Гааааааааааааааааааааааааа1072。