Che*_*eso 25 .net multithreading begininvoke
MS文档中的此页面,包括Windows窗体应用程序中的异步,指出:
如果需要,可以调用EndInvoke从委托中检索返回值,但这不是必需的.(重点补充)
这个页面涵盖了异步委托的一般情况,说明了一些不同的东西:
无论使用哪种技术,始终调用EndInvoke来完成异步调用.
这两者似乎存在直接冲突.
这是真的吗?谁能解释一下?
Jar*_*Par 22
除非接口的文档明确说明,否则必须为每个调用BeginInvoke的地方调用EndInvoke.主要原因是EndInvoke是所有者可以安全地释放可能为BeginInvoke调用分配的某些资源(例如WaitHandle)的唯一时间.
但这条规则有例外.诸如Control.BeginInvoke之类的API不需要EndInvoke,但它在文档中是明确的.
Jon*_*eet 13
两者都是真的 - 他们是不同的电话.
通常,您应始终调用EndInvoke以确保释放异步调用获取的任何资源.
但是,Windows窗体团队保证您不需要这样做Control.Invoke.您可能需要为其他实现执行此操作ISynchronizeInvoke.
| 归档时间: |
|
| 查看次数: |
4250 次 |
| 最近记录: |