내가 비동기 적으로 실행하는 Windows SVC를 가지고는 (내가 만드는 방법과 자신의 매개 변수를 편집 한 그들 비동기), 조금 같은 : http://msdn.microsoft.com/en-us/library/ms731177.aspxIAsyncresult - UI를 고정하지 않고 폴링합니까?
그러나, 내가 비동기 적으로 실행하려는 작업을 호출 (서비스/서버에 대한 호출)을 수행 한 다음 Backgroundworker에서 ReportProgress()를 사용하여 UI를 업데이트하십시오.이 모든 작업은 backgroundworker의 dowork() 메소드에서 발생합니다. 그러나 Endxxx 메서드를 호출하여 결과를 얻지 만 문제점은 내 코드가 아닌 것처럼 보입니까?
while (!asyncresult.IsCompleted) { // Do all UI updating etc here... }
// Call endXXX here.
그러나이 방법은 UI를 잠급니다. 현재 코드는 다음과 같습니다 (UI를 잠그지 않습니다) :
IAsyncResult res = null;
try
{
res = serviceX.BeginXXX(ResultCallBack, "");
}
catch (FaultException<ManagementException> managementEx)
{
Logger.Error(managementEx.Detail.ToString());
MessageBox.Show("Could not add printer. See log.");
}
InstallBackgoundWorker.ReportProgress(90);
InstallBackgoundWorker.ReportProgress(91);
InstallBackgoundWorker.ReportProgress(93);
InstallBackgoundWorker.ReportProgress(94);
InstallBackgoundWorker.ReportProgress(95);
InstallBackgoundWorker.ReportProgress(96);
InstallBackgoundWorker.ReportProgress(97);
if (res.IsCompleted)
{
ResultCallBack(res);
}
InstallBackgoundWorker.ReportProgress(100);
이 정보가 맞습니까? 나에게 잘못된 것 같다.
귀하가 주장한대로이 메시지는 Windows 서비스가 아닙니다. 그것은 WCF 서비스입니다. Windows 서비스는 Service Manager를 통해 호스트 컴퓨터에서 실행되는 응용 프로그램으로, 로그인 한 사용자가 있는지 여부에 관계없이 실행됩니다. Windows 서비스에서이 작업을 수행하는 이유에 대해 정말로 혼란 스러웠습니다. –