使用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
客户端对象不需要是静态的。将其转换为属性。
该非触发事件是,当您创建一个新的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();
}