Hasty Briefsbeta

双语

Making an agile version of a Windows Runtime delegate in C++/WinRT, part 5 - The Old New Thing

12 hours ago
  • 不可封送处理的委托必须在其原始上下文中销毁,以避免线程问题(非线程安全的引用计数、错误的线程销毁)。
  • 自定义删除器(in_context_deleter)会捕获原始上下文,并在释放委托之前使用 IContextCallback::ContextCallback 切换上下文。
  • make_agile_delegate 函数处理三种情况:敏捷对象、不可封送处理(使用自定义删除器)以及其他情况(使用 agile_ref)。
  • IContextCallback 调用可能会失败,因此删除器无法保证绝对可靠;需要进一步改进。