相关疑难解决方法(0)

在C#中监视垃圾收集器

我有一个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)

.net c# garbage-collection .net-3.5

33
推荐指数
1
解决办法
2万
查看次数

如何克隆多个游戏对象的方式可以调整克隆的属性,以匹配场景视图中的所有其他对象

我问我如何调整一个克隆的形状/尺寸以影响场景视图中的所有其他克隆,并且接受的答案是现场.它只能克隆一个游戏对象.我尝试进行一些调整,但我提出的唯一解决方案是为其他对象添加重复方法.在处理要克隆的几个游戏对象时,这不能很好地工作.

如何克隆几个独特的游戏对象,以便调整一个克隆的组件/属性会影响场景视图中该对象的所有其他克隆?

请注意,我不想在运行时实现这一点,我不想使用预制件.我正在使用它来帮助创建复杂的级别,因此正在调整克隆的实时更新非常重要.

另外,我还需要一种方法来关闭每个克隆上的重复属性/组件复制,最好是用一个按钮.

unity-game-engine unity-editor

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