문제

내 코드는 a 웹 서비스 작업을 수행하는 데 몇 분이 걸리는 방법. 그 시간 동안 내 창은 응답이없고 완전한 흰색 화면을 보여줍니다.

다른 스레드에서 호출 방법을 원하지 않습니다.

그것을 처리하는 가장 좋은 방법입니까?

환경 : C#, 웹 서비스

도움이 되었습니까?

해결책

별도의 스레드에서 요청을 할 수있어 UI 스레드가 반응을 유지합니다. 완료되면 응답을 UI 스레드에 다시 동기화해야합니다.

다른 팁

그만큼 배경 노동자 당신의 친구입니다.

여기에 있습니다 예시 웹 서비스가있는 배경 작업자를 사용하는 방법. 기본적으로 별도의 스레드를 사용하지 않고 UI 측에서 집중적 인 작업을 수행 할 수있는 방법이 없습니다. 배경 작업자는 별도의 스레드에서 실행하는 가장 좋은 방법입니다.

반응 형 UI를 사용하려면 다른 스레드를 사용해야합니다.

그러나 Visual Studio를 사용하는 경우 생성 된 클라이언트 클래스에는 비동기 메소드 서명이 있습니다. 메소드가 "getData"인 경우 "getDataAsync"라는 메소드가 창을 얼지 않아야합니다.

예는 다음과 같습니다.

WsClient client;
protected override void Load() {
    base.Onload();
    client = new WsClient();
    client.GetDataCompleted += new GetDataCompletedEventHandler(client_GetDataCompleted);
}

//here is the call
protected void Invoke()
{
    client.GetDataAsync(txtSearch.Text);
}

//here is the result
void client_GetDataCompleted(object sender, GetDataCompletedEventArgs e)
{
    //display the result
    txtResult.Text = e.Result;
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top