KnitsEDI 2024-08-26 17:36 采纳率: 0%
浏览 4

c#多线程在visual2017中能运行,在2022版中报未将对象引用设置到对象的实例。

Thread objThread = new Thread(new ThreadStart(delegate
{
object sender = null;
EventArgs e = null;
Control.CheckForIllegalCrossThreadCalls = false;

            btnfind_Click(sender, e);
        }));
        objThread.Start();
  • 写回答

2条回答 默认 最新

  • 吃不了席 2024-08-26 17:37
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    在C#中,跨线程访问UI控件需要使用Invoke方法来确保线程安全。在你的代码中,你可以尝试将btnfind_Click的调用替换为Invoke方法,如下所示:

    Thread objThread = new Thread(new ThreadStart(delegate
    {
        object sender = null;
        EventArgs e = null;
        Control.CheckForIllegalCrossThreadCalls = false;
    
        this.Invoke((MethodInvoker)delegate {
            btnfind_Click(sender, e);
        });
    }));
    objThread.Start();
    

    这样,你的代码应该可以在2022年正常运行,不会出现“未将对家引用设置到对象的实例”的错误。

    评论

报告相同问题?

问题事件

  • 修改了问题 8月26日
  • 修改了问题 8月26日
  • 修改了问题 8月26日
  • 创建了问题 8月26日