跨线程异常

2023-12-31

我有一段时间遇到问题

这一行:

txtPastes.Text = (string)e.UserState;

抛出跨线程异常,我没有找到任何解决方案

txtPastes- 文本框

GuiUpdate- 后台工作者

lstAllPastes- 字符串列表

    private void GuiUpdate_DoWork(object sender, DoWorkEventArgs e)
    {
        while (true)
        {
            while (lstAllPastes.Count == 0) ;

            for (int i = 0; i < lstAllPastes[0].Length; i++)
            {
                GuiUpdate.ReportProgress(0, lstAllPastes[0].Substring(0, i));
                Thread.Sleep(1);
            }
            lstAllPastes.RemoveAt(0);
        }
    }

    private void GuiUpdate_ProgressChanged(object sender, ProgressChangedEventArgs e)
    {
        txtPastes.Text = (string)e.UserState;
    }

    private void GuiUpdate_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {

    }

您无法从 UI 线程以外的任何线程更新 UI 控件。通常,BackgroundWorker将负责提高其ProgressChanged and RunWorkerCompletedUI 线程上正确的事件。由于这里的情况似乎并非如此,因此您可以使用以下方法自行将 UI 更新逻辑编组到 UI 线程:Invoke method:

txtPastes.Invoke(new Action(() => 
{ 
    // This code is executed on the UI thread.
    txtPastes.Text = (string)e.UserState; 
}));

如果您使用 WPF,则需要致电Invoke在控件的调度程序上:

txtPastes.Dispatcher.Invoke(new Action(() => 
{ 
    txtPastes.Text = (string)e.UserState; 
}));

Update:正如托马斯·莱维斯克(Thomas Levesque)和汉斯·帕桑特(Hans Passant)所提到的,你应该调查你的原因ProgressChangedUI 线程上未引发事件。我怀疑你正在开始BackgroundWorker应用程序初始化生命周期过早,这可能会导致竞争条件,并可能导致NullReferenceException如果第一个ProgressChanged事件在您之前引发txtPastes文本框已初始化。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

跨线程异常 的相关文章

随机推荐

  • Pandas diff SeriesGroupBy 比较慢

    Total time 1 01876 s Function prepare at line 91 Line Hits Time Per Hit Time Line Contents 91 profile 92 def prepare 93
  • 远程连接mysql

    我安装了 Windows 7vm一样的pc 我有一个包含以下代码的表单 MySqlConnection connection new MySqlConnection SERVER 127 0 0 1 DATABASE my test UID
  • Keras:ValueError:检查模型目标时出错:预期密集_1 具有形状(无,10),但得到形状为(10,1)的数组

    我是 keras 新手 遇到此错误 ValueError 检查模型目标时出错 预期 dend 1 具有形状 None 10 但得到形状为 10 1 的数组 我的输入数组形状是 10 1010 我的模型只有一层 model Sequentia
  • SonarQube 与 Jest 单元测试

    我一直在尝试找出如何填充声纳Qube和我的笑话单元测试和 net 单元测试 我有一个本地版本SQ 6 7以及所有最新版本的 Javascript 和 C 插件 说到 Jest 我有sonar jest reporter https www
  • 模拟框架集分隔符行为

    HTML5 当前规范删除了 tag 有一个很好的功能没有它就不容易重现 在框架集中 您可以使用鼠标更改框架分隔线的位置 如何在 JavaScript 中使用 DIV 提供相同的功能 我遇到过下列 http www jsfiddle net
  • React.memo 如何与 useCallback 配合使用

    据我了解 React memo 是一个记忆组件的 API 如果它的 props 没有改变 React 使用该组件的最新渲染 而不将其与之前的版本进行比较 跳过新渲染并与旧渲染进行比较可以加快应用程序的速度 凉爽的 现在 这是我不明白的 如果
  • Java orElse 的可选工作并不像 else

    在Optional中 当调用optimal orElse方法时 无论元素是否存在 orElse部分是否被执行 它都不会表现为if else条件 在下面的代码中 如果您看到Case 1getNullPoJo 和 getDefaultPoJo
  • Google Maps Android api v2 折线长度

    我正在尝试找到 android 地图 api v2 方法 该方法将确定我在移动时创建的折线的长度 我会将其放入 onLocationChanged 中以进行持续更新 有人知道地图 api 的方法是什么以及显示长度的单位是什么吗 Polyli
  • C语言中的按位运算(0x80、0xFF、<<)

    我在理解这段代码时遇到问题 我所知道的是 我们已将代码传递到汇编器中 该汇编器已将代码转换为 字节代码 现在我有一个虚拟机应该可以读取这段代码 该函数应该读取第一个字节代码指令 我不明白这段代码中发生了什么 我想我们正在尝试读取这个字节码
  • 错误 [22P02] 错误:整数输入语法无效:“”;

    从来没有见过这样的错误 错误 22P02 错误 整数输入语法无效 执行查询时出错 创建表 Public Function PrimkCreate ByVal myPrimkTable As String ByVal nCon As Odbc
  • Android ConstraintLayout @dimens 替换为硬编码值

    嘿嘿小伙伴们 目前我正在学习新的布局编辑器Android Studio 与新的约束布局 顺便说一句 我讨厌它 但我遇到了一个问题 如果我想指定一个布局高度 with dimen 得到replaced with a dp值代替 还有人遇到这个
  • NextJS API 错误:“TypeError:res.status 不是函数”

    Context 我在用着NextJS v11 1 1 canary 11 React v17 0 2 and Typescript v4 3 5 我想创建一个简单的 API 端点 基于NextJS Typescript 文档 https n
  • 如何通过键从 JSON 字符串中提取值

    我有一列包含 Json 字符串记录 我想解析 json 并从 select 语句中获取特定键的值 示例 JSON kofaxDocId 8ae16f46 c68f 11e5 8105 0e15fb39b661 systemDocType L
  • 如何在 Qt 创建者中更改/配置所需的编译器?即在 MSVC/Mingw 或 g++/clang++ 之间切换

    我知道如何在 Qt Creator 中添加编译器 http doc qt io qtcreator creator tool chains html 然而我的Qt总是选择MSVC编译器 如何设置MinGW 内置或外部 而不是MSVC 找不到
  • Python没有操作码缓存器?

    我目前正在使用 PHP 我计划开始在我的下一个项目中使用 Django 但我没有任何使用Python的经验 经过一番搜索 我仍然找不到 Python 操作码缓存器 有很多 PHP 操作码缓存器 APC eAccelerator Xcache
  • 目标完整性 - 文件“Pods-ios.xcconfig”无法打开,因为无法解析其路径。可能会丢失”

    我正在尝试利用 RestKit 版本 0 20 1 附带的四个示例 目前正在尝试构建 RKSearchExample 构建 成功 但没有出现模拟器 我收到两个警告 第一个 目标完整性 文件 Pods ios xcconfig 无法打开 因为
  • 数组.include?多个值

    2 6 13 99 27 include 2 非常适合检查数组是否包含一个值 但是 如果我想检查数组是否包含多个值列表中的任何一个 该怎么办 有没有比这样做更短的方法Array include a or Array include b or
  • Google Chrome - 开发工具 - 网络选项卡 - 预览 - JSON 与文本

    我刚刚将 Chrome 更新到 beta 版本 版本 24 0 1312 5 beta m 和用于显示 json 响应的树视图的网络选项卡预览 现在它是纯文本 就像响应选项卡一样 我检查了设置 里面似乎没有任何内容可以改变它 还有其他人看过
  • 在 doGet(e) 上将参数传递给 webapp

    我试图弄清楚 URL 中的参数是如何传递给doGet 功能 我尝试做 https script google com a macros my domain com s some random string generated by GAS
  • 跨线程异常

    我有一段时间遇到问题 这一行 txtPastes Text string e UserState 抛出跨线程异常 我没有找到任何解决方案 txtPastes 文本框 GuiUpdate 后台工作者 lstAllPastes 字符串列表 pr