【发布时间】:2014-05-22 06:07:31
【问题描述】:
ObservableCollection<MyClass> collection = new ObservableCollection<MyClass>();
public MainWindow()
{
InitializeComponent();
collection.Add(new MyClass() { Name = "Vikram" });
collection.Add(new MyClass() { Name = "Test" });
CallingTaskDelay();
MyClass class1 = collection[0];
lock (class1)
{
txtName.Text = class1.Name;
}
}
private Task TaskDelayMethod()
{
return Task.Run(() => ChangeItem());
}
private async void CallingTaskDelay()
{
await TaskDelayMethod();
}
private void ChangeItem()
{
MyClass myclass = collection[0];
lock (myclass)
{
myclass.Name = "anup";
Thread.Sleep(5000);
}
}
当我在 ChangeItem() 方法中更改 myclass 实例的内容时。我想阻止在我正在执行的 MainWindow() 方法中访问相同的实例,如下所示 -
lock (class1)
{
txtName.Text = class1.Name;
}
如何实现。我的不工作。
【问题讨论】:
-
解释 我的不工作
-
@SriramSakthivel 我展示的场景..它在这里不起作用
-
不工作可能有任何意义。不编译?例外?给出意外的输出?如果是这样呢?请解释。我们无法猜测
-
@SriramSakthivel :这意味着,我想要的情况是,只要 ChangeItem() 将内容更改为“anup”,我应该无法访问 MainMethod 中的 class1.Name ()。我希望你得到我想要的。谢谢:)
标签: c# .net multithreading thread-safety