我有一个WPF应用程序遇到了很多性能问题.最糟糕的是,有时候应用程序会在再次运行之前冻结几秒钟.
我正在调试应用程序,看看这个冻结可能与什么有关,我相信可能导致它的一个原因是垃圾收集器.由于我的应用程序在非常有限的环境中运行,我相信垃圾收集器可以在运行时使用所有机器的资源,而不会将任何资源留给我们的应用程序.
为了检查这个假设,我发现了这些文章:.NET 4.0中的垃圾收集通知和垃圾收集通知,它解释了当垃圾收集器开始运行和完成时如何通知我的应用程序.
所以,根据这些文章,我创建了下面的类来获取通知:
public sealed class GCMonitor
{
private static volatile GCMonitor instance;
private static object syncRoot = new object();
private Thread gcMonitorThread;
private ThreadStart gcMonitorThreadStart;
private bool isRunning;
public static GCMonitor GetInstance()
{
if (instance == null)
{
lock (syncRoot)
{
instance = new GCMonitor();
}
}
return instance;
}
private GCMonitor()
{
isRunning = false;
gcMonitorThreadStart = new ThreadStart(DoGCMonitoring);
gcMonitorThread = new Thread(gcMonitorThreadStart);
}
public void StartGCMonitoring()
{
if (!isRunning)
{ …Run Code Online (Sandbox Code Playgroud) 我问我如何调整一个克隆的形状/尺寸以影响场景视图中的所有其他克隆,并且接受的答案是现场.它只能克隆一个游戏对象.我尝试进行一些调整,但我提出的唯一解决方案是为其他对象添加重复方法.在处理要克隆的几个游戏对象时,这不能很好地工作.
如何克隆几个独特的游戏对象,以便调整一个克隆的组件/属性会影响场景视图中该对象的所有其他克隆?
请注意,我不想在运行时实现这一点,我不想使用预制件.我正在使用它来帮助创建复杂的级别,因此正在调整克隆的实时更新非常重要.
另外,我还需要一种方法来关闭每个克隆上的重复属性/组件复制,最好是用一个按钮.