使用new()释放一个静态对象

本文关键字:一个 静态 对象 释放 new 使用 | 更新日期: 2023-09-27 18:08:55

我在。net 4.5中有一个WPF应用程序在这个应用中,我创建了一个名为"Client"的类。

在我的app . example .cs中,我声明并实例化了一个Client对象:

    public partial class App : Application
    {
        public static Client obj_myClient;
        private void Application_Startup_1(object sender, StartupEventArgs e)
        {
            obj_myClient = new Client();
        }
    }

启动后,我在DataGrid中加载所有客户端,并且,当我进入客户端时(在DataGrid上),客户端属性加载在App.obj_myClient(带绑定)中。

我可以很容易地修改我的客户端并保存在数据库中。

我的问题:当我想创建一个新的客户端,我需要"冲洗"我的App.objMyClient对象,所以我使用:

App.obj_myClient = new Client();

这段代码编译正确,没有崩溃,但它似乎在我的绑定中生成虚假数据,并且总是出现奇怪的错误(如非火灾事件更改等....)

我想这和:

App.obj_myClient = new Client(); 

因为如果我删除这一行,代码会更好。

在这种情况下,您有什么建议?

谢谢你:)

最诚挚的问候,

Nixeus

使用new()释放一个静态对象

客户端对象不需要是静态的。将其转换为属性。

该非触发事件是,当您创建一个新的Client对象时,旧对象的订阅将丢失,您必须重新创建它们

您可以执行以下操作来避免使用静态变量。但是很难说它是否能解决你的问题,因为我们不知道它在做什么。

public class App : Application
{
    public Client obj_myClient;
    private void Application_Startup_1(object sender, StartupEventArgs e)
    {
        obj_myClient = new Client();
    }
}
使用

private void SomeMethod()
{
    var someValue = ((App)Application.Current).obj_myClient.WhatEverMethod();
}