2017-10-18 194 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