2013-04-12 5 views
1

.net 4.5에 WPF 응용 프로그램이 있습니다. 이 응용 프로그램에서는 "Client"라는 클래스를 만들었습니다. 난에 (클라이언트 행에 갈 때, 시작 후new()를 사용하여 정적 객체를 해제 하시겠습니까?

public partial class App : Application 
    { 

     public static Client obj_myClient; 

     private void Application_Startup_1(object sender, StartupEventArgs e) 
     { 

      obj_myClient = new Client(); 

     } 
    } 

, 내가 데이터 그리드에 내 모든 클라이언트를로드하고 내 App.xaml.cs를에

내가 선언하고 클라이언트 객체를 실체화 DataGrid)에서 클라이언트 속성은 App.obj_myClient (바인딩과 함께)에로드됩니다.

DataBAse에서 내 클라이언트를 쉽게 수정할 수 있습니다.

내 질문 : 새로운 클라이언트를 생성 할 때, 난 내 App.objMyClient 객체를 "플러시"필요, 그래서 내가 사용 :

App.obj_myClient = new Client(); 

이 코드를 마우스 오른쪽 컴파일하지 않고 충돌하지만, 허위 데이터를 생성하는 표시 내 바인딩 항상 이상한 실수 (비 화재 사건 등 변경 등 ...)

나는 그것이에 관한 생각 :

App.obj_myClient = new Client(); 

내가이를 제거하는 경우 때문에라인, 코드가 더 좋습니다.

이 경우 귀하의 조언은 무엇입니까?

고마워요 :)

안부,

Nixeus

+4

여기 정적 인 개체가 필요합니다 –

+0

내 대답은 매우 나빠질 것입니다. 그러나 ..... 잘 모르겠습니다! 내가 바인딩 된 정적 변수를 사용하지만 어쩌면 내가 아닌 정적 개체를 사용할 수 있습니다! –

답변

1

당신은 정적으로 클라이언트 개체를 필요 없어요. 그것을 속성으로 변환하십시오.

이벤트가 발생하지 않으면 새 Client 객체를 만들 때 이전 객체에 대한 가입이 손실되고 다시 만들어야합니다.

+0

정보를 제공해 주셔서 감사합니다. 나는 정적을 제거 할 것이다! :) –

1

당신은 정적 변수를 방지하기 위해 다음을 수행 할 수있다. 그러나 그것이 무엇을하고 있는지 알지 못하기 때문에 그것이 당신의 문제를 해결할지를 말하기 란 어렵습니다.

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(); 
} 
+0

설명 주셔서 감사합니다 :) –

관련 문제