c# – .NET核心不支持BeginInvoke? (PlatformNotSupported异常)

我已将库FluentFTP移植到.NET标准/ .NET内核,但异步方法在async / await块中使用BeginInvoke.它是这样的:

async ConnectAsync(){
   BeginConnect();
}
void BeginConnect(){
   BeginInvoke(...)   << error at this point
}

那时我得到一个PlatformNotSupported异常.在.NET核心上可以做些什么来支持它?

>完整信息here.
>完整代码:ConnectAsync,BeginConnect.

最佳答案
异步I / O方法不应使用Delegate.BeginInvoke.这暴露了一个fake-asynchronous wrapper的同步方法,它首先应该是异步的.整个设计需要重新评估.

.NET Core does not support Delegate.BeginInvoke有很好的理由. .NET Core 2.0可能决定支持它们(因为Microsoft IMO正在使用v2做出一些糟糕的设计决策).

但回到最初的问题:解决方案是do the //TODO:将ConnectAsync实现为真正的异步方法.然后,将ConnectConnect和EndConnect实现为ConnectAsync的包装非常简单.

转载注明原文:c# – .NET核心不支持BeginInvoke? (PlatformNotSupported异常) - 代码日志