C# 委托 / 跨线程访问UI / 线程间操作无效: 从不是创建控件“Form1”的线程访问它

时间:2021-02-16 11:48:04

C# 委托 / 跨线程访问UI /  线程间操作无效: 从不是创建控件“Form1”的线程访问它

网上的代码都比较复杂,还是这个简单

见代码,

简易解决办法:

主窗体代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
using System.Windows.Forms; namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
Thread func = new Thread(lib.test_func);
func.Start(this);
}
}
}

  

线程代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace WindowsFormsApp1
{
public static class lib
{
public static void test_func(object frm)
{
var frm2 = frm as Form1;
while (true)
{
System.Threading.Thread.Sleep(100);
frm2.Invoke(new Action(() => {
frm2.Text = DateTime.Now.ToString();
})); }
} }
}