收到错误 - System.InvalidOperationException 未处理

2023-12-05

我刚刚开始学习Windows应用程序开发,我们得到了自学项目来开发一个Windows应用程序。我正在尝试创建发送电子邮件的应用程序。我创建了一个类MsgSender.cs来处理这个问题。当我从主窗体调用该类时,出现以下错误

System.InvalidOperationException 未处理。

错误信息-->

跨线程操作无效:从创建它的线程以外的线程访问控制“pictureBox1”。

堆栈跟踪如下:

System.InvalidOperationException was unhandled
Message=Cross-thread operation not valid: Control 'pictureBox1' accessed from a thread other than the thread it was created on.
Source=System.Windows.Forms
StackTrace:
   at System.Windows.Forms.Control.get_Handle()
   at System.Windows.Forms.Control.SetVisibleCore(Boolean value)
   at System.Windows.Forms.Control.set_Visible(Boolean value)
   at UltooApp.Form1.sendMethod() in D:\Ultoo Application\UltooApp\UltooApp\Form1.cs:line 32
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()
InnerException: 

Code:

private void btnSend_Click(object sender, EventArgs e)
    {
        pictureBox1.Visible = true;
        count++;
        lblMsgStatus.Visible = false;
        getMsgDetails();
        msg = txtMsg.Text;

        Thread t = new Thread(new ThreadStart(sendMethod));
        t.IsBackground = true;
        t.Start();
    }

    void sendMethod()
    {
        string lblText = (String)MsgSender.sendSMS(to, msg, "hotmail", uname, pwd);
        pictureBox1.Visible = false;
        lblMsgStatus.Visible = true;
        lblMsgStatus.Text = lblText + "\nFrom: " + uname + " To: " + cmbxNumber.SelectedItem + " " + count;
    }

You can access Form GUI controls in GUI thread and 您正在尝试访问外部 GUI 线程,这就是出现异常的原因。您可以使用 MethodInvoker 来访问 GUI 线程中的控件。

void sendMethod()
{
    MethodInvoker mi = delegate{
       string lblText = (String) MsgSender.sendSMS(to, msg, "hotmail", uname, pwd);
       pictureBox1.Visible = false;
       lblMsgStatus.Visible = true;
       lblMsgStatus.Text = 
             lblText + "\nFrom: " + uname + 
             " To: " + cmbxNumber.SelectedItem + " " + count;
   }; 

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

收到错误 - System.InvalidOperationException 未处理 的相关文章

  • Dapper 强类型查询返回默认对象值

    刚刚开始使用 Dapper 并喜欢它 我遇到了问题 它返回正确数量的对象 但它们的属性都有默认值 using var dbConnection Connection await dbConnection OpenAsync const st
  • 使用内部构造函数实例化类

    我有一个类 其构造函数被定义为内部 这意味着我无法实例化它 虽然这可能有道理 但出于调试和研究目的 我仍然愿意做一次 是否可以通过反射来做到这一点 我知道我可以访问私有 内部成员 但是我可以调用内部构造函数吗 或者 由于构造函数没有做任何重
  • boost::interprocess 准备好迎接黄金时间了吗? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在开发一个由内存映射文件支持的线
  • 实体框架中的重复键异常?

    我试图捕获当我将具有给定用户名的现有用户插入数据库时 引发的异常 正如标题所说 我正在使用 EF 当我尝试将用户插入数据库时 引发的唯一异常是 UpdateException 如何提取此异常以识别其是否是重复异常或其他异常 catch Up
  • .NET Windows 服务中调用 C# 的 wait 的 I/O 回调是否可以不阻塞?

    我知道在 ASP NET 中 当使用 wait 时工作线程会返回到池中 而 I O 发生在后台 这对于可扩展性非常有用 我的 Windows 服务是一个套接字服务器 它使用 Begin End 样式的异步套接字 I O 混合我的魔法 我知道
  • 在 MVC 类上创建主键字段

    我是 MVC 和 C 新手 我只是偶然发现它并发现它很有趣 我遇到了一个不允许我继续的问题 这是我的代码 using System using System Collections Generic using System Linq usi
  • WPF - 按多列排序时使用自定义比较器

    我有一个 ListView GridView 我想按 2 列排序 因此如果第 1 列中有 2 个以上的项目具有相同的值 它将按第 2 列排序 非常简单 但是在对 A Z 进行排序时 空字符串会出现在顶部 我想把它们移到底部 我制作了一个比较
  • 为什么 LinkedList 通常比 List 慢?

    我开始在我的一些 C 算法中使用一些 LinkedList 而不是列表 希望能够加快速度 然而 我注意到他们只是感觉更慢 像任何优秀的开发人员一样 我认为我应该尽职调查并验证我的感受 所以我决定对一些简单的循环进行基准测试 我认为用一些随机
  • 当我尝试使用 AVX 功能时,Clang 生成错误

    我使用的是 Windows 10 使用 Clang 版本 5 最近安装 当我编译以下内容时 define AVX define AVX2 include
  • 可疑地使用“else”与 i/o 结合,看到“;”靠近“如果”

    以下是导致此问题的代码 if fromProc 0 MSG SLEEP nempty proc2clk 0 gt proc2clk 0 fromProc 0 Woke up fromProc 0 MSG SLEEP fromProc 0 M
  • 我们应该使用 Eval 还是 Databind 事件?

    当使用 Asp Net 并使用 ListView 等控件创建网站时 使用 Eval 命令是一个好习惯吗 还是应该在 databind 事件中填充文字和数据 取决于您是否想在更新事件上写回数据 在这种情况下数据绑定 如果您只想读取该数据 可以
  • 为什么在 .net 中使用 Invoke on Controls? [复制]

    这个问题在这里已经有答案了 可能的重复 为什么 NET不允许跨线程操作 https stackoverflow com questions 2896504 why net does not allow cross thread operat
  • IEnumerable.比带中断的 for 循环更快吗?

    我们的代码打开表单时遇到了一些缓慢的情况 这可能是由于for循环与break这需要很长时间才能执行 我把它切换到IEnumerable Any 并看到表格很快打开 我现在试图弄清楚是否单独进行此更改会提高性能 或者是否正在访问Product
  • 语义问题 Qt Creator:命名空间“std”中没有名为“cout”的成员

    我开始使用 Qt Creator 编写代码 对于 C 文件 我遇到很多语义问题 99 是 命名空间 yyy 中没有名为 xxx 的成员cpp文件构建 编译和输出没有问题 如果我点击例如cout 我已链接到 iostream 我是否需要在 Q
  • C# - 命名空间内的类型声明

    在命名空间内而不是在类中声明类型的可能用途是什么 For ex namespace Test public delegate void Ispossible 这是有效的并且不会产生任何编译错误 但我无法想象为什么我们会以这种方式声明它而不是
  • 向每个收件人发送一封包含不同内容的电子邮件(使用抄送字段)

    在你因为这个问题 毫无意义 和 不可能 而驳回之前 请听我说完 问题 我们在使用我们的系统发送的每封电子邮件中实施跟踪像素 即具有唯一 URL 的可下载 GIF 文件 这有助于我们跟踪电子邮件的打开情况 问题是 当我们抄送一些收件人时 跟踪
  • 为什么从绑定返回的对象会忽略额外的参数?

    假设我有一个带有两个参数的函数 void f int x int y 我想绑定其中之一 我可以用std bind如下 auto partiallyBoundF std bind f 10 1 partiallyBoundF仅需要一个参数 但
  • 获取大于某个数字的元素个数

    我正在尝试解决以下问题 数字被插入到容器中 每次插入数字时 我需要知道容器中有多少元素大于或等于当前插入的数字 我相信这两个操作都可以以对数复杂度完成 我的问题 C 库中有标准容器可以解决这个问题吗 我知道std multiset可以在对数
  • C 中的静态和动态绑定(严格来说是 C,而不是 C++)是什么?

    我最初对发布这个问题感到担忧 以免它重复 但即使在谷歌搜索了许多关键字之后 我在 StackOverflow 上找不到任何解释 C 的静态和动态绑定的链接 尽管有 C 的问题和答案 但是都涉及classes以及显然不适合 C 的东西 Sta
  • 编译器什么时候内联函数?

    在 C 中 函数仅在显式声明时才内联inline 或在头文件中定义 或者编译器是否允许内联函数 因为他们认为合适 The inline关键字实际上只是告诉链接器 或告诉编译器告诉链接器 同一函数的多个相同定义不是错误 如果您想在标头中定义函

随机推荐

  • 如何在箱线图中绘制与水平箱线图平行的条形图以及箱线图中的面积分数?

    我正在研究数据呈现 我需要并行绘制箱线图和堆叠条形图 用不同深浅的颜色和点覆盖面积的比例着色 我怎样才能绘制它 这是一个通用解决方案 您可以使用它向格子箱线图添加平行百分比框 它计算描述箱线图部分 胡须和主要部分 的确切百分比 该解决方案基
  • pandas 数据透视表中的小计

    我喜欢根据组进行小计 这样就不会干扰总计 代码是 import pandas as pd import numpy as np dict data duration 0 7 project id 3 resource u Arya Star
  • multiprocessing.Queue 中大对象发生死锁

    当你提供一个足够大的对象到multiprocessing Queue 该程序似乎挂在奇怪的地方 考虑这个最小的例子 import multiprocessing def dump dict queue size queue put x x
  • 保留前导零 C

    我正在尝试从 proc maps 读取内存地址 我使用以下代码 for ptr NULL getline ptr n file gt 0 if ptr 0 continue sscanf ptr lx lx r0 r1 printf r0
  • 如何重写特征函数并从重写的函数中调用它?

    设想 trait A function calc v return v 1 class MyClass use A function calc v v return A calc v print new MyClass gt calc 2
  • 如何在 Windows 中按住 SHIFT 键的同时模拟鼠标单击?

    Hello I m trying to simulate a mouse click while holding the SHIFT key I have been trying to do this with the pynput mod
  • HTML5 视频 - 加载百分比?

    有谁知道我需要查询什么事件或属性才能获取 HTML5 视频已加载量的百分比 我想绘制一个CSS样式的 加载 栏 其宽度代表这个数字 就像 You Tube 或任何其他视频播放器一样 因此 就像您管一样 即使整个视频尚未加载 视频也会播放 并
  • 通过按钮触发 Ctrl S 或 Ctrl P

    Ok now I am aware that you can listen to keypresses keydowns keyups etc but I would like to TRIGGER a keypress Like as i
  • 在 Python Selenium 中处理 reCAPTCHA

    我需要使用 python selenium 自动化网页 但它遇到了 reCaptcha 它位于另一个框架中 我想解决验证码问题 并在解决验证码问题后单击登录按钮继续执行脚本 然而 这会变得很棘手 因为涉及到一个框架 并且该框架需要切换回默认
  • getline() 设置故障位并跳过最后一行

    我在用着std getline 枚举文件中的行 并且它大部分工作正常 然而这让我很好奇 std getline 正在跳过我文件中的最后一行 但前提是它是空白的 使用这个最小的例子 include
  • 如果在移动设备上查看,则会显示弹出窗口

    我有一个网站需要将移动用户重定向到移动网站 但是由于这些网站托管在不同的地方 我无法设置 cookie 来记住它们是否是从移动网站定向的 因此存在一个连续的循环 我现在想做的就是如果用户在移动设备上查看 则显示一个弹出窗口 为他们提供在移动
  • 将 azure ml studio 设计器项目导出为 jupyter 笔记本?

    我希望我在这里没有遗漏一些明显的东西 我正在使用新的 azure ml studio 设计器 我能够用来创建数据集 训练模型并很好地使用它们 azure ml studio 还允许创建 Jupyter 笔记本并使用它们进行机器学习 我也能做
  • 为什么 JavaScript 对话框(警报、确认)会停止页面重绘?

    在浏览器页面上打开模式对话框 停止页面重绘 脚本开始在后台异步运行 不间断 我说明了这个 JSfiddle 中的行为http jsfiddle net YNbux 当alert 当警报关闭时 会显示并在动画中跳跃 此行为存在于 至少在我的计
  • 手动更改多租户会话

    我需要创建一个多租户应用程序 能够在 java 代码内的模式之间进行切换 不基于用户请求 我读过文章 https fizzylogic nl 2016 01 24 make your spring boot application mult
  • 如何使用谷歌应用程序脚本获取谷歌电子表格最后一行的值

    我如何使用谷歌应用程序脚本从谷歌电子表格的最后一行获取值或数据 我已经尝试了很多次 但仍然无法获取数据 这样做的目的是获取记录的最后一个 ID 以便我能够添加另一个 ID 递增的记录 您可以使用 getLastRow 获取包含内容的最后一行
  • 在 gridview Asp.Net 中使用 Dropdownlist?

    我想在 gridview 上使用下拉列表 我有来自 asp net 的以下代码
  • 更新继承的财产

    var foo x 1 var bar proto foo proto specific to implementation var bar Object create foo same result as above with stand
  • 如何将pandas数据框转换为namedtuple

    如何将pandas数据框转换为namedtuple 该任务将面向多处理工作 def df2namedtuple df return tuple df row itertuples有选择name and index 您可以使用它们返回精确的输
  • 如何循环、匹配、替换?

    我有多个带有相同花括号的字符串 如果计数为 1 则需要替换第一个出现的字符串 我想将它们替换为动态字符串 如果计数为 2 则替换第二个出现的字符串 依此类推 直到条件满足
  • 收到错误 - System.InvalidOperationException 未处理

    我刚刚开始学习Windows应用程序开发 我们得到了自学项目来开发一个Windows应用程序 我正在尝试创建发送电子邮件的应用程序 我创建了一个类MsgSender cs来处理这个问题 当我从主窗体调用该类时 出现以下错误 System I