使用“3”参数调用“BeginSendMessage”的异常:“值不在预期范围内。”

Posted

技术标签:

【中文标题】使用“3”参数调用“BeginSendMessage”的异常:“值不在预期范围内。”【英文标题】:Exception calling "BeginSendMessage" with "3" argument(s): "Value does not fall within the expected range." 【发布时间】:2013-10-08 17:58:20 【问题描述】:

我正在尝试执行单个联系人 IM 的脚本(通过 Microsoft Lync),并且已经成功地将脚本一直运行到最后一行:

$null = $m.BeginSendMessage($d, $null, $d)

注意:

$d = New-Object "System.Collections.Generic.Dictionary [Microsoft.Lync.Model.Conversation.InstantMessageContentType, String]"

$d.Add($PlainText, "This is a test.")

以下是 Psh 在执行此语法时引发的异常。它似乎在启动 $null 变量时失败。

Exception calling "BeginSendMessage" with "3" argument(s): "Value does not fall within the expected range."
At C:\ScriptsPS\IM_SingleContact.ps1:75 char:1
+ $null = $m.BeginSendMessage($d, $null, $d)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

【问题讨论】:

【参考方案1】:

第二个参数必须是回调方法。 Using AsyncCallback in Powershell有一个简单的例子:

$myCallback = [AsyncCallback]
  param( $asyncResult)
  # callback code
  if ($asyncResult.isCompleted) 
    Write-Host "Message Sent"
  

[void]$m.BeginSendMessage($d, $myCallback, $d)

【讨论】:

可能,但回调的目的不就是简单地使用 EndRead 显示结果并关闭吗?在这种情况下,我再次将包含即时消息、Null 值和 Dictionary 对象的 Dictionary 对象 ($d) 传递给 BeginSendMessage 方法。 “BeginSendMessage”的参数是实际将文本从对象拉入方法的语法,然后由该方法进行发送。这是我的理解,也许我还是不明白。不过我确实知道 C#.. 谢谢。 可能对[AsyncCallback]$null 的显式强制转换适用于空回调?

以上是关于使用“3”参数调用“BeginSendMessage”的异常:“值不在预期范围内。”的主要内容,如果未能解决你的问题,请参考以下文章

如何使用参数 swift 3.0 Alamofire 4.0 调用邮政服务?

oracle中调用存储过程时传递参数值的3种方式。。

ActionScript 3 在指定的延迟后调用函数并传递参数 - 不使用Timer()

Rails 3 升级:使用数组作为参数从 js.erb 调用 javascript 函数

Python学习记录3-函数参数详解

使用所有 3 个参数调用时 DirectX Device::CreateTexture2D() 崩溃