属性支持领域 – 它有什么用?

一方面,我知道属性的可取用途是有一个支持字段,如下例所示: private int m_Capacity; public int Capacity { get { return m_Capacity > 0 ? m_Capacity : -666; } set { m_Capacity = value; } } 另一方面,使用上面的示例而不是丢弃字段并仅将属性用于所有目的,我会得到什么好处,如下例所示: public int Capacity { get { return Capacity > 0 ? Capacity : -666; } set { Capacity = value; } } 使用支持字段用于常规(非自动实现)属性有什么用处?

在C#程序中,我试图获取应用程序的CPU使用百分比,但它总是显示100

这是我的代码。 PerformanceCounter cpuCounter = new PerformanceCounter(); cpuCounter.CategoryName = “Processor”; cpuCounter.CounterName = “% Processor Time”; cpuCounter.InstanceName = “_Total”; // will always start at 0 dynamic firstValue = cpuCounter.NextValue(); System.Threading.Thread.Sleep(1000); dynamic secondValue = cpuCounter.NextValue(); return secondValue; 这里有很多人正在解决这个问题,即返回零,但我总是得到100,而且我确信我的软件没有占用那么多的CPU粉末。 关于我能做些什么来使这项工作正确的任何想法。 为了清楚起见,我试图从运行此代码的应用程序中检索处理器使用情况,而不是单独的代码。 我也在运行VM,但这似乎并不重要。 有任何想法吗?

静态构造函数在实例构造函数之后调用?

亲爱的,这个问题已经被问过了 ,但是答案中没有解释我看到的问题。 问题: C#编程指南说: 静态构造函数用于初始化任何静态数据,或执行仅需执行一次的特定操作。 在创建第一个实例或引用任何静态成员之前会自动调用它。 特别是,在创建任何类的实例之前调用静态构造函数。 (这不能确保静态构造函数在创建实例之前完成,但这是另一回事。) 我们来看一下示例代码: using System; public class Test { static public Test test = new Test(); static Test() { Console.WriteLine(“static Test()”); } public Test() { Console.WriteLine(“new Test()”); } } public class Program { public static void Main() { Console.WriteLine(“Main() started”); Console.WriteLine(“Test.test = ” + Test.test); Console.WriteLine(“Main() finished”); } } […]

EF Generic Repository从新插入的通用实体获取Id

我的所有实体都有财产ID。 数据库中的所有表都将自动生成的整数标识Id作为主键。 我有创建实体的通用方法。 有没有办法在实体插入数据库后获取实体ID? public override int Create(T entity) { string entitySet = GetEntitySetName(); _context.AddObject(entitySet, entity); _context.SaveChanges(); return ; //TODO Return Id here } 在简单(非通用)存储库中,我可能只返回Entity.Id,但如何在通用存储库中获得相同的行为? 我可能有包含int属性Id的所有实体的基本实体类,但有没有办法让它工作而不实现这种inheritance?

Process.MainModule – >“访问被拒绝”

我想以不同的方式处理这个问题,即。 确定我是否有权访问。 是否可以查看您是否可以访问主模块? foreach (Process p in Process.GetProcesses()) { try { //This throws error for some processes. if (p.MainModule.FileName.ToLower().EndsWith(ExeName, StringComparison.CurrentCultureIgnoreCase)) { //Do some stuff } } catch (Exception) { //Acess denied } }

无法加载文件或程序集’Oracle.DataAccess错误

我用C#构建ASP.NET应用程序,我想连接到oracle数据库。 我在我的64位Microsoft Window Server 2008计算机上的应用程序中添加了对Oracle.DataAccess引用。 我还在我的机器上安装了ODAC(Oracle数据访问组件),并且此路径上也存在Oracle.DataAccess.dll C:\ WINDOWS \ Microsoft.NET \assembly\ GAC_64 \ Oracle.DataAccess 但当我试图连接我遇到以下错误: 无法加载文件或程序集“Oracle.DataAccess,Version = 4.112.3.0,Culture = neutral,PublicKeyToken = 89b483f429c47342”或其依赖项之一。 该系统找不到指定的文件。

如何处理具有异步方法的对象?

我有这个对象PreloadClient实现IDisposable ,我想处理它,但在异步方法完成他们的调用后……这没有发生 private void Preload(SlideHandler slide) { using(PreloadClient client = new PreloadClient()) { client.PreloadCompleted += client_PreloadCompleted; client.Preload(slide); } // Here client is disposed immediately } private void client_PreloadCompleted(object sender, SlidePreloadCompletedEventArgs e) { // this is method is called after a while, // but errors are thrown when trying to access object state (fields, properties) } […]

在方法签名中使用委托和使用Func / Action 有什么区别?

我一直在尝试用C#代替我的代表,但我似乎没有明白使用它们的意义。 以下是代表们的MSDN页面上的一些稍微重建的代码: using System; using System.Collections; namespace Delegates { // Describes a book in the book list: public struct Book { public string Title; // Title of the book. public string Author; // Author of the book. public decimal Price; // Price of the book. public bool Paperback; // Is it paperback? public Book(string title, […]

如何使用任务并行库(TPL)实现重试逻辑

可能重复: 如果任务中发生exception,则根据用户输入多次重试任务 我正在寻找一种在TPL中实现重试逻辑的方法。 我想有一个generics函数/类,它将能够返回一个将执行给定操作的Task,并且在exception的情况下将重试该任务,直到给定的重试计数。 我尝试使用ContinueWith进行播放,并且在出现exception时让回调创建一个新任务,但它似乎只适用于固定数量的重试。 有什么建议? private static void Main() { Task taskWithRetry = CreateTaskWithRetry(DoSometing, 10); taskWithRetry.Start(); // … } private static int DoSometing() { throw new NotImplementedException(); } private static Task CreateTaskWithRetry(Func action, int retryCount) { }

更新PropertyGrid

当SelectedObject属性中的对象发生更改时,如何自动更新属性网格? 我已经尝试在我的类中实现INotifyPropertyChanged但是属性网格实际上并没有在后台显示对象的新属性,直到我点击它。 我已经尝试直接订阅我的对象的PropertyChanged事件,并在调用它时调用PropertyGrid的Refresh()方法。 但是我的一些房产是相关的。 更改一个属性的含义可能会引发多个PropertyChanged事件。 这似乎工作正常,但我仍然想知道是否有更简洁的方法通过DataBinding这样做。 此外,我还想避免在用户仅更新单个属性后多次使用控件Refresh。 那么有没有办法让PropertyGrid从PropertyChanged事件中刷新?