WPF 응용 프로그램이 올바르게 닫히지 않습니다
-
03-07-2019 - |
문제
난 전화하고있어 Application.Current.Shutdown()
XAML Windows로 바인딩 된 클래스에서 ObjectDataProvider
, 그러나 응용 프로그램은 닫히지 않습니다. 누구든지 이유를 이해하도록 도와 줄 수 있습니까? 메인 창을 닫은 후 응용 프로그램이 완전히 닫히지 않으며 작업 관리자의 프로세스 목록에서 사라지지 않습니다.
해결책
배경 처리를 수행 할 스레드를 만들었습니까? 가지고 있다면, 설정하십시오 .IsBackground
자산의 속성, 또는 앱을 계속 실행할 수 있습니다.
다른 팁
노력하다 Environment.Exit(0)
대신에
이것을 추가하는 것을 잊지 마십시오 :
private void Window_Closed(object sender, EventArgs e)
{
Application.Current.Shutdown();
}
도움이 되었기를 바랍니다.
응용 프로그램에 여러 개의 창 또는 대화 상자가있는 경우 각각을 명시 적으로 닫아야 할 수도 있습니다.
대화 상자를 닫습니다.
_mydialog.close ();
모든 창을 닫으십시오 :
foreach(var window in Application.Current.Windows.ToList())
{
window.Close();
}
같은 문제가 있었는데 응용 프로그램이 닫혀 있었지만 신청 프로세스가 중지되지 않습니다.
제 경우에는 배경 작업자로부터 창을 열었습니다 (아래 코드)
BackgroundWorker BG = new BackgroundWorker();
BG.DoWork += new DoWorkEventHandler(BG_DoWork);
StockMinWindow MinWindow = new StockMinWindow(null); -------- this is the problem
BG.RunWorkerAsync();
배경 작업자가 문제가되지 않는 것처럼 보이지만 라인을 지우면 응용 프로그램이 올바르게 닫혔습니다.
배경 워크에서 창을 열면 주요 스레드 (아래 코드)를 사용합니다.
View.Dispatcher.BeginInvoke(new Action(delegate()
{
StockMinWindow MinWindow = new StockMinWindow(StockMinList);
MinWindow.Owner = View;
MinWindow.ShowDialog();
}));
도움이되기를 바랍니다.
메인 창이 닫혀 있더라도 응용 프로그램이 종료되지 않는 문제가있었습니다. Close () 대신 스플래시 화면에서 hide ()를 수행 한 것으로 나타 났으므로 응용 프로그램을 살리기 위해 여전히 백그라운드에서 숨어있었습니다.