【发布时间】:2018-07-15 07:57:18
【问题描述】:
我正在开发一个小型 .NET Standard 2.0 logging library,但我无法找到一种方法来可靠地获取当前进程在所有平台上使用的内存,尤其是在 UWP 上。
现在我正在使用这段代码(.NET Standard 2.0):
long memory = Process.GetCurrentProcess().PrivateMemorySize64;
效果很好,但是在 UWP 上抛出了一个很好的 PlatformNotSupportedException 异常(实际上,这只是在 DEBUG 模式下,而在 RELEASE 中直接抛出 TypeLoadException 加上一堆其他 P/出于某种原因调用异常)。
这里的问题是 UWP 显然不支持该 API,我应该在哪里使用:
long memory = (long)MemoryManager.AppMemoryUsage;
问题在于MemoryManager 是一个仅限 UWP 的 API,它在 .NET Standard 2.0 中不存在。现在,想到的第一个解决方法是在库中公开一个设置,让用户手动设置一个自定义的Func<long> 委托来检索当前的内存使用情况,这样如果它知道默认方法不适用于当前平台,可以覆盖它。
不过,这似乎是一个糟糕的技巧,我希望将所有内容都保留在库中。所以我的问题是:
有没有办法在任何支持 .NET Standard 2.0 库的平台上可靠地检索当前进程/应用程序的使用情况?
谢谢!
【问题讨论】:
标签: c# .net uwp .net-standard .net-standard-2.0