PowerShell WPF跨线程读取TextBox控件值失败问题求助
问题原因
你调用Dispatcher.Invoke执行读取操作时使用了无返回值的[action]委托,即使代码块内获取到了文本框的Text属性值,也不会向外传递,因此没有返回结果。而写操作不需要返回值,所以用[action]可以正常执行。
解决方案
将读取操作的委托类型替换为有返回值的[Func[string]](因为返回的文本是字符串类型),修改后的读取代码如下:
$textboxvalue = $Global:syncHash.folderDialogTextBox.Dispatcher.Invoke([Func[string]]{ $Global:Synchash.folderDialogTextBox.Text },"Normal")
完整修正后的脚本块$SB代码
$SB = { $textboxvalue = $Global:syncHash.folderDialogTextBox.Dispatcher.Invoke([Func[string]]{$Global:Synchash.folderDialogTextBox.Text},"Normal") $Global:syncHash.Window.Dispatcher.Invoke([action]{$Global:Synchash.outputTextBox.AppendText("textboxvalue = $textboxvalue`r")},"Normal") }
注意:你代码中点击事件调用的Start-Runspace函数需要提前定义,否则点击按钮不会触发逻辑。如果没有该函数的实现,也可以直接在按钮点击事件内执行上述读取逻辑,无需额外开Runspace。
内容的提问来源于stack exchange,提问作者Rickybobby
相关产品推荐
相关产品推荐

