2017-02-14 105 views
1

我的理解是,“await SaveChangesAsync()”和“SaveChanges()”有什么区别吗?他们似乎做同样的事情

await myContext.SaveChangesAsync(); 

将保存更改,但不允许线程以同样的方式继续这一

myContext.SaveChanges(); 

的行为。

这两者有什么区别吗?

+0

[如果异步等待不会创建任何其他线程,那么它如何使应用程序响应?](http://stackoverflow.com/q/37419572) –

+5

[如果async-await不可以重复创建任何额外的线程,然后它如何使应用程序响应?](http://stackoverflow.com/questions/37419572/if-async-await-doesnt-create-any-additional-threads-then-how-does-it -make-appl) – orvi

回答

2

允许线程继续

这是你的误解。

简而言之,像SaveChanges这样的同步方法会阻塞调用线程,直到方法完成。

异步方法如SaveChangesAsync(与await一起使用时)不会阻塞调用线程。 await将“暂停”该方法,但不会阻塞该线程。

你可以在我的async intro博客文章和我的文章There Is No Thread找到更多关于这是如何工作的信息。

+0

所以基本上,你是说使用“await”会暂停当前的方法,但调用此方法的父线程将继续前进而没有暂停? – user7560542

+0

@ user7560542是的。查看我的异步介绍帖子了解更多信息。 –

相关问题