C# 在异步线程操作类的变量

时间:2022-05-23 12:48:50

如下代码:

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} public string Message = "";
private void button1_Click(object sender, EventArgs e)
{
Task.Run(
new Action(
() => {
this.Message = "hello kun";
}
)
);
Thread.Sleep();
MessageBox.Show(this.Message);
}
}

在异步线程中操作Message变量,实测可行;

注意:(1)如果主线程不加延时的话Message变量还是空的,说明此时异步线程并未执行到赋值变量。

(2)这种做法不是线程安全的,如果有多个线程同时修改Message的话会造成数据混乱,非要这么使用的话最好在Message上加Look