클라이언트가 일부 데이터를 수동으로 업데이트하는 데 사용하는 작은 앱이 있습니다. 매우 기본입니다. 로드 할 때 사용자가 선택할 수있는 회사 목록을 채우고 단추를 클릭하여 다른 시스템의 데이터를 업데이트합니다. 클라이언트는 명령 줄에서이 동일한 기능을 실행할 수 있기를 원하므로 백그라운드 작업자를 추가했습니다. 앱이 실행되면 특정 arg를 확인하고 발견되면 작업자를 시작합니다. 작업자가 완료되면 Close()를 호출합니다.Winform 앱이 닫히지 않습니다
이 모든 것이 제대로 작동하는 것으로 보입니다 (예상대로 데이터가 업데이트되고 앱이 닫힌 것처럼 보입니다).하지만 작업 관리자를 확인할 때 앱이 계속 실행 중입니다.
내 질문 :
- 어떤 것은/일이 여전히 실행중인 응용 프로그램의 원인을 찾을 수 찾고되어야 하는가?
- 더 좋은 방법이 있나요?
다음은 코드의 샘플입니다 :
public MainForm()
{
InitializeComponent();
var args = Environment.GetCommandLineArgs();
Array.ForEach(args, x => x.ToLower());
if (args.Contains("u"))
backgroundWorker.RunWorkerAsync();
}
private void BackgroundWorkerDoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
{
//call to web service to update data
}
private void BackgroundWorkerRunWorkerCompleted(object sender, System.ComponentModel.RunWorkerCompletedEventArgs e)
{
Close();
}
Program.cs 파일의 코드는 무엇입니까? –
Program.cs의 코드가 기본값입니다. 나는 그것을 수정하지 않았다. – Chuck
Program.cs의 Application.Run()이 종료되지 않았다고 가정합니다. 그렇다면 뭔가가 실행중인 스레드에 메시지 펌프를 보관하고 있습니다. –