293 字
1 分钟
[笔记] 记录一次该死的 “玄学“ Bug, 赶紧看看避开这个坑!!! .NET Core, Delegate.BeginInvoke, PlatformNotSupportedException

概述:#

.NET Core 不支持委托的 BeginInvoke 方法, 使用别的方法, 例如 Task 来替代它!

这件事:#

首先是… 报了一堆 “平台不支持的” 错误.

堆栈显示也看不出来是哪里的问题, 但我看到了 Threading 这玩意儿…:

最后通过 “死亡断点” 发现是这里出的问题, 这是一个异步操作的回调函数.

进一步调试, 发现是这里, 这里又会 Invoke 一个事件:

好家伙, 又是一个事件… 然后我看了看订阅了这个事件的地方…

乍一看,,,, 没啥毛病! 但问题确实出在这里! (我实在是太菜了) 最后… 我思考了下, 我在 Invoke 调用的委托里面, 整了异步的操作… 于是我试着将 BeginInvoke 换成 Invoke, 然后… 问题解决了!!!

后来又双叒叕遇到了这个问题,,, 然后仔细搜索了下资料. 懂了. 原来 .NET Core 不支持委托的 BeginInvoke 方法. 而事件的本质就是多播委托!

[笔记] 记录一次该死的 “玄学“ Bug, 赶紧看看避开这个坑!!! .NET Core, Delegate.BeginInvoke, PlatformNotSupportedException
https://slimenull.com/posts/20210309214803/
作者
SlimeNull
发布于
2021-03-09
许可协议
CC BY-NC-SA 4.0