You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 03:15:01