2013-05-02 2 views
2

C#에서 백그라운드 프로세스를 실행하는 방법은 무엇입니까? 내 요구 사항은 30 분 이상 실행되는 응용 프로그램에서 프로세스를 트리거하는 것입니다. 이제는 화면에 프로세스의 업데이트 된 상태를 보여줘야합니다. 아무도 나에게 이것을 구현하는 옵션을 제안 할 수 있습니까? 앱에서 WCF 서비스를 사용했습니다.백그라운드 프로세스 구현 방법

답변

2

내 옵션은 다음과 같습니다 작업이 진행되는 표시 로딩 이미지를 사용하는 동안


1. 사용하십시오 BackgroundWorker 구성 과정과 의미, 장기 실행 작업을 수행합니다. 응답을 받기 위해 wcf 서비스를 사용하기 때문에 실제 작업 진행 상황을 표시하기가 어렵습니다.


2. ThreadPool.QueueUserWorkItem을 사용하고 장기 실행 프로세스를 스레드 풀 스레드에 위임합니다. 그런 다음 Dispatcher.BeginInvoke을 사용하여 UI를 업데이트하십시오.

1

One-Way 통화 및 콜백 정보를 읽으십시오.

1

wcf 서비스에서 긴 프로세스가 수행되면 백그라운드 작업자 스레드를 사용하여 실행하십시오. 통지 진행을 구현하고 데이터베이스에 특수 테이블을 갱신하십시오 (사용 가능한 경우). (테이블을 읽음으로써) 프로세스의 상태를 확인하고 반환하는 wcf 서비스의 또 다른 메소드를 생성하고 앱에서 호출합니다.

편집 : Background worker을 사용하는 방법에 대한

읽기. 무거운 작업을 수행하는 데 서비스에서 사용하십시오. backround 스레드를 실행하면 서비스에서 응답을 반환해야합니다. 그런 다음 스레드가있는 작업의 상태를 기록 할 수있는 테이블을 업데이트하십시오. 응용 프로그램에 timer을 구현하고 서비스 상태를 다시 호출하여 테이블의 상태를 읽습니다.

+0

귀중한 의견을 보내 주셔서 감사합니다. 이 스레딩 개념 및 서비스에 익숙하지 않습니다. 가능한 경우이 코드 스 니펫을 공유 할 수 있습니까? – antosnowin

+0

제안 된대로 테이블을 사용하여 프로세스 실행에 대한 업데이트를 기록 할 수 있습니다. 하지만 스레드를 호출하고 비동기 서비스 호출을 사용하는 것에 대해서는 잘 모르겠다. – antosnowin