这是C#的详细问题.
假设我有一个带有对象的类,并且该对象受到锁的保护:
Object mLock = new Object();
MyObject property;
public MyObject MyProperty {
get {
return property;
}
set {
property = value;
}
}
Run Code Online (Sandbox Code Playgroud)
我想要一个轮询线程来查询该属性.我还希望线程偶尔更新该对象的属性,有时用户可以更新该属性,并且用户希望能够看到该属性.
以下代码是否会正确锁定数据?
Object mLock = new Object();
MyObject property;
public MyObject MyProperty {
get {
lock (mLock){
return property;
}
}
set {
lock (mLock){
property = value;
}
}
}
Run Code Online (Sandbox Code Playgroud)
通过'正确',我的意思是,如果我想打电话
MyProperty.Field1 = 2;
Run Code Online (Sandbox Code Playgroud)
或者其他什么,我会在更新时锁定该字段?设置是由'get'函数范围内的equals运算符完成的,还是'get'函数(因此锁定)首先完成,然后设置,然后'set'被调用,从而绕过锁?
编辑:由于这显然不会做的伎俩,会是什么?我是否需要做以下事情:
Object mLock = new Object();
MyObject property;
public MyObject MyProperty {
get {
MyObject tmp = null;
lock …Run Code Online (Sandbox Code Playgroud) 我有一个C#.NET 4.5 WPF应用程序,带有一个公共静态类.在该类中,我有一个公共静态字符串.我想要的非常简单,我想将该静态字符串绑定到WPF Label,因此每当更新该字符串时,WPF Label也会更新.
我怎样才能以最简单,最简单的方式实现这一目标
下面的静态类
public static class GlobalStats
{
private static void updateValues()
{
srGlobalStatics="example";
}
public static string srGlobalStatics = "";
}
Run Code Online (Sandbox Code Playgroud)
我希望我的WPF标签绑定到该特定srGlobalStatics字符串.
这是我的XAML代码:
<Label Name="lblGlobalStats" Content="lblGlobalStats" HorizontalAlignment="Left"
Margin="10,36,0,0" VerticalAlignment="Top"/>
Run Code Online (Sandbox Code Playgroud)
这不可能吗?
我可以在MainWindow.xaml.cs中编写一个函数,但是我不想尽可能地将不必要的代码放在那里.