小编And*_*dre的帖子

是否需要锁定对bool的访问权限,或者是否为Overkill

我有一个主要设计为POCO类的类,各种线程和任务可以读取其值,只有其他只偶尔更新这些值.这似乎是ReaderWriterLockSlim的理想场景.

问题是,在类中,如果属性需要是线程安全的,如果属性是bool,那是否过度杀伤?如果它是一个int会发生什么?约会时间?

public class MyClass
{
  private bool _theValue = false;
  private ReaderWriterLockSlim _theValueLock = new ReaderWriterLockSlim();

  public bool TheValue
  {
    get
    {
      bool returnVal = false;
      try
      {
        _theValueLock.EnterReadLock();
        returnVal = _theValue;
      }
      finally
      { _theValueLock.ExitReadLock(); }
      return returnVal;
    }
    set
    {
      try
      {
        _theValueLock.EnterWriteLock();
        _theValue = value;
      }
      finally
      { _theValueLock.ExitWriteLock(); }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

所有这些代码都是矫枉过正的,而且简单......

public bool TheValue { get; set; }
Run Code Online (Sandbox Code Playgroud)

......会足够吗?因为Type是bool,安全吗?如果是的话,什么时候变得不安全?字节?诠释?约会时间?

编辑
我的基本架构是具有此类存储状态.也许有一个服务负责对这个类进行写操作.所有其他类都可以根据此状态数据读取和执行其逻辑.我会尽力确保所有数据都是一致的,但如下所述,我主要担心的是数据的原子性和危险性.

结论
感谢大家的回应,一切都很有价值.我主要担心的是写入/读取的原子性(即担心痉挛).对于.NET平台,如果有问题的变量是一个小于4个字节的内置值类型,则读取和写入是原子的(例如,short和int很好,long和double不是).

c# multithreading locking readerwriterlockslim

12
推荐指数
3
解决办法
6584
查看次数

如何在Graph Api中使用appRoleAssignment

我正在尝试利用Beta API将Azure用户分配给应用程序。

我查看了文档,并使用HttpClient和在C#控制台应用程序中尝试了多种尝试WebClient,但均未成功。然后,我去了Microsoft图浏览器https://developer.microsoft.com/en-us/graph/graph-explorer。我无法正常工作。

我看了一下文档 https://developer.microsoft.com/zh-cn/graph/docs/api-reference/beta/api/approleassignment_get

该文档的HTTP请求的实际文档与示例不匹配。Graph Explorer似乎暗示该示例是正确的,但是通过各种尝试,我只能得到

{
    "error": {
        "code": "Request_UnsupportedQuery",
        "message": "Direct queries to this resource type are not supported.",
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

我的基本网址是 https://graph.microsoft.com/beta/appRoleAssignments/

该示例说,{id}但我不知道要输入什么。我输入了几个guid,用户ID,对象ID,资源ID,但没有一个起作用。

这并不是说有任何拒绝访问的消息,因此我认为它与Scopes无关(尽管与此同时文档也有些空白)。

理想情况下,我可以查看给定的Guest Azure用户是否有权访问特定的应用程序,然后可以去更新作业。我可能还需要删除分配。

azure-ad-graph-api microsoft-graph

5
推荐指数
1
解决办法
2369
查看次数

更好的Linq查询过滤没有子项的父列表

我有2个列表.

var adultList = new List<Dude>();
adultList.Add(new Dude() { ID = 2, Name = "Randy Marsh" });
adultList.Add(new Dude() { ID = 3, Name = "Jimbo Kern" }); // no kids
adultList.Add(new Dude() { ID = 4, Name = "Gerald Broflovski" });
adultList.Add(new Dude() { ID = 5, Name = "Stuart McCormick" });
adultList.Add(new Dude() { ID = 6, Name = "Liane Cartman" });
adultList.Add(new Dude() { ID = 7, Name = "Ned Gerblansky" }); // no kids

var childList …
Run Code Online (Sandbox Code Playgroud)

c# linq

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