2017-02-14 108 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是的。查看我的異步介紹帖子瞭解更多信息。 –

相關問題