2017-10-18 187 views
-1

IAsyncResult接口中有一個CompletedSynchronously屬性,如果異步操作同步完成,則返回true。但是在什麼情況下這是不可理解的。是否有可能以某種方式避免這種情況?請解釋。當異步操作同步完成時?

+0

_「但在什麼情況下這是不可理解的_」 - 你是什麼意思,「不可理解」?我不理解你的問題。你擔心什麼?你有一個實際的編程_problem_你需要幫助解決嗎? –

+0

爲什麼異步操作同步完成? – Mihail

+0

_「爲什麼異步操作同步完成?」 - 因爲它可以。例如,您從文本閱讀器讀取數據,但閱讀器已經緩衝了所需的數據,因此它可以立即完成讀取操作,而無需等待較慢的I/O設備。計算平臺包含緩存,緩衝和其他旨在提高效率的機制的各種示例,有時它們可​​以很好地工作,以便您可以立即完成您想要完成的任務,而不必像通常那樣等待。 –

回答

1

由於MSDN狀態:

使用此屬性來確定異步操作同步完成。

但是在什麼情況下,這是無法理解:例如,該屬性可如果I/O請求小

OP一個異步I/O操作返回true。是否有可能以某種方式避免這種情況?

是的,你應該注意:

大多數IAsyncResult接口的實施者將使用此屬性,應該返回false。從.NET Framework 4.5開始,如果此屬性未正確實現,則使用FromAsync方法創建的任務將無法完成。請參閱.NET Framework 4.5中的應用程序兼容性。

+0

「請求小」是什麼意思? – Mihail

+0

我有幾個相同的請求。有些是同步執行的,有些是異步執行的 – Mihail

+0

@Mihail _「small」_是指彼得對你的問題的評論 – MickyD