相关疑难解决方法(0)

C#线程安全与get/set

这是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# locking properties thread-safety

50
推荐指数
3
解决办法
8万
查看次数

如何将简单的静态字符串绑定到WPF Label

我有一个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中编写一个函数,但是我不想尽可能地将不必要的代码放在那里.

c# data-binding wpf

-1
推荐指数
1
解决办法
2143
查看次数

标签 统计

c# ×2

data-binding ×1

locking ×1

properties ×1

thread-safety ×1

wpf ×1