我真的找不到关于这个确切主题的任何内容,所以如果问题已经存在,请引导我走向正确的方向。
根据我对 .NET 的了解,不可能跨不同的线程访问变量(如果该陈述有误,请纠正我,这正是我在某处读到的内容)。
然而,现在在这个代码示例中,它似乎不应该工作:
class MyClass
{
public int variable;
internal MyClass()
{
Thread thread = new Thread(new ThreadStart(DoSomething));
thread.IsBackground = true;
thread.Start();
}
public void DoSomething()
{
variable = 0;
for (int i = 0; i < 10; i++)
variable++;
MessageBox.Show(variable.ToString());
}
}
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void SomeMethod();
{
MyClass mc = new MyClass();
}
}
当我运行时SomeMethod()
,.NET 不应该抛出异常,因为创建的对象mc
在与 -initializer 中创建的线程不同的线程中运行,mc
并且这个新线程正在尝试访问mc
?
MessageBox
节目如(不是)预期的10
那样,但我不确定为什么这应该起作用。
也许我不知道要搜索什么,但我找不到可以解决这个问题的线程主题,但也许我对变量和线程的想法是错误的。