首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Powershell中使用AsyncCallback

在Powershell中使用AsyncCallback
EN

Stack Overflow用户
提问于 2013-04-29 15:01:41
回答 2查看 5.4K关注 0票数 4

我必须对.NET对象调用一个方法,该方法被定义为

IAsyncResult BeginListMetrics( ListMetricsRequest listMetricsRequest,AsyncCallback回调,对象状态)

是否可以使用powershell函数作为AsyncCallback委托?多么?

EN

回答 2

Stack Overflow用户

发布于 2013-06-07 01:10:27

通过如下转换,可以将Scriptblocks转换为大多数类型的委托。

代码语言:javascript
复制
$myCallback = [AsyncCallback]{
  param( $asyncResult)
  # callback code
  if ($asyncResult.isCompleted) {
    get-date
  }
}
票数 8
EN

Stack Overflow用户

发布于 2016-12-15 02:08:59

虽然@Xpw的答案是正确的,并且将Scriptblocks转换为委托通常是有用的,但对于AsyncCallback的具体情况,通常需要更多。

Oisin的PowerShell 2.0 -来自.NET的异步回调解释了这个问题,并提供了解决方案。充分发挥作用的例子是可用的。虽然Oisin清楚地说明了问题,但如果您不熟悉寄存器-对象,则很难理解他的解决方案。

有关详细信息,请参阅Oisin的精彩文章。简单地说,AsyncCallback是通过线程池调用的,因此无法运行ScriptBlock,因为线程没有PowerShell RunSpace。解决方法是嵌入一个小的C#类,该类接受AsyncCallback并引发一个事件,而Register-ObjectEvent用于在PowerShell中设置事件处理程序。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16281955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档