有人知道为什么Delegate.BeginInvoke不是';Silverlight上不支持吗?

有人知道为什么Delegate.BeginInvoke不是';Silverlight上不支持吗?,silverlight,delegates,Silverlight,Delegates,MSDN文档说明: 在Silverlight中,在所有委托类型上自动定义的BeginInvoke方法总是抛出NotSupportedException,因此您不能使用它对线程池线程进行异步方法调用 但没有说明原因 有人有想法吗?复杂的问题。 委托的所有BeginInvoke方法声明如下所示 [MethodImpl(0, MethodCodeType=MethodCodeType.Runtime)] public virtual IAsyncResult BeginInvoke(...some p

MSDN文档说明:

在Silverlight中,在所有委托类型上自动定义的BeginInvoke方法总是抛出NotSupportedException,因此您不能使用它对线程池线程进行异步方法调用

但没有说明原因

有人有想法吗?

复杂的问题。
委托的所有BeginInvoke方法声明如下所示

[MethodImpl(0, MethodCodeType=MethodCodeType.Runtime)]
public virtual IAsyncResult BeginInvoke(...some params...); 
这里最重要的部分是MethodCodeType.Runtime。它

指定方法实现由运行时提供

有关运行时实现的更多信息,请参阅

Silverlight是跨平台框架。因此,它应该实现自己的平台无关(即托管)异步执行机制(线程和调度)。这就是managed Deployment.Current.Dispatcher类及其BeginInvoke方法(可能从Silverlight调用)的故事

顺便说一句,Dispatcher和DispatcherOperation类都与CLS兼容,保证它们在不同的CLI实现下工作。 这就是问题的简短答案

为什么Delegate.BeginInvoke不是 是否支持Silverlight

因为现在是创建真正跨平台应用程序的时候了:)

这个复杂的问题。
委托的所有BeginInvoke方法声明如下所示

[MethodImpl(0, MethodCodeType=MethodCodeType.Runtime)]
public virtual IAsyncResult BeginInvoke(...some params...); 
这里最重要的部分是MethodCodeType.Runtime。它

指定方法实现由运行时提供

有关运行时实现的更多信息,请参阅

Silverlight是跨平台框架。因此,它应该实现自己的平台无关(即托管)异步执行机制(线程和调度)。这就是managed Deployment.Current.Dispatcher类及其BeginInvoke方法(可能从Silverlight调用)的故事

顺便说一句,Dispatcher和DispatcherOperation类都与CLS兼容,保证它们在不同的CLI实现下工作。 这就是问题的简短答案

为什么Delegate.BeginInvoke不是 是否支持Silverlight

因为现在是创建真正跨平台应用程序的时候了:)