我想定义一个设置属性值的操作(由工作线程计算)。应该在另一个线程上下文(UI 线程)中调用该操作。
为了简化问题 - 它归结为一个问题:为什么这段代码不起作用以及我必须做些什么才能使其按预期工作:
public struct Person
{
public string Name;
}
Person person;
Action<Person> action;
public void Update()
{
person = new Person();
new Thread(() =>
{
action = new Action<Person>(c => c.Name = "Me");
}).Start();
Thread.Sleep(1000);
action(person);
Debug.WriteLine(person.Name ?? "null");
}
为什么这给了我“null”而不是“Sami”?