使用“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 调用邮政服务?
ActionScript 3 在指定的延迟后调用函数并传递参数 - 不使用Timer()