Tag: system.management

C#System.Management.Automation.Powershell类在Invoke()调用时泄漏内存

我有一个C#测试应用程序的代码,它使用PowerShell查询系统信息,在其中我有一些简单的函数,如下所示: public void GetSystemInfo() { using (PowerShell ps = PowerShell.Create()) { ps.AddCommand(“Get-Disk”); // Get-Disk is an example; this varies foreach (PSObject result in ps.Invoke()) { // … // Do work here. Process results, etc… // … } } } 这很简单,主要来自MSDN示例,例如: https : //msdn.microsoft.com/en-us/library/dd182449(v = vs。85).aspx 问题是,每次调用此函数时,我都可以看到应用程序的内存占用增长。 足迹在调用ps.Invoke()时正在增长,并且永远不会收缩。 我如何处理数据并不重要; 我甚至可以完全评论foreach循环的主体,并且内存永远不会被垃圾收集。 从我看到PowerShell类接口可以看出,似乎没有办法强制它自我清理,并且Dispose()显然不起作用,因为资源在使用后仍然在内存中泄漏阻止退出。 这是C#PowerShell类实现中的已知错误还是PowerShell本身? 是否有人知道解决方案,或者可能的替代方案? 编辑 我现在也试过了,结果相同: public […]

参考类型’组件’声称它在’系统’中定义

试图在UWP应用程序中获取一些WMI对象。 在.net 4.6上运行VS2015。 我收到错误的ForEach和方法调用声明“引用类型’组件’声称它在’系统’中定义”,错误CS7069。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Management; namespace SystemInfo { class wmiObject { static osDetails Program() { ManagementObjectCollection osDetailsCollection = getWMIObject(“SELECT OSType, caption FROM Win32_OperatingSystem”); osDetails Details = new osDetails(); foreach (ManagementObject mo in osDetailsCollection) { Details.OSName = mo[“Caption”].ToString(); } osDetailsCollection = getWMIObject(“SELECT Description, NumberOfLogicalProcessors, L3CacheSize […]

System.Management.ManagementException

我正在运行以下代码: System.Management.ManagementClass wmiNetAdapterConfiguration = new System.Management.ManagementClass(“Win32_NetworkAdapterConfiguration”); System.Management.ManagementObjectCollection wmiNetAdapters = wmiNetAdapterConfiguration.GetInstances(); Log.logInfo(“Net adapters:” + wmiNetAdapters.get_Count()); 在一些机器上它没关系,有些我得到以下错误: System.Management.ManagementException:未找到 调用堆栈: System.Management.ManagementException: Not found at System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode) at System.Management.ManagementScope.InitializeGuts(Object o) at System.Management.ManagementScope.Initialize() at System.Management.ManagementObject.Initialize(Boolean getObject) at System.Management.ManagementClass.GetInstances(EnumerationOptions options) at System.Management.ManagementClass.GetInstances() 知道为什么吗?

捕获USB插件并拔出事件System.InvalidCastException

我正在尝试检测USB设备插入并使用WinForm桌面C#应用程序删除: public Form1() { InitializeComponent(); USB(); } 然后: private void USB() { WqlEventQuery weqQuery = new WqlEventQuery(); weqQuery.EventClassName = “__InstanceOperationEvent”; weqQuery.WithinInterval = new TimeSpan(0, 0, 3); weqQuery.Condition = @”TargetInstance ISA ‘Win32_DiskDrive'”; var m_mewWatcher = new ManagementEventWatcher(weqQuery); m_mewWatcher.EventArrived += new EventArrivedEventHandler(m_mewWatcher_EventArrived); m_mewWatcher.Start(); } 和: static void m_mewWatcher_EventArrived(object sender, EventArrivedEventArgs e) { bool bUSBEvent = false; foreach […]