문제
내 코드는 a 웹 서비스 작업을 수행하는 데 몇 분이 걸리는 방법. 그 시간 동안 내 창은 응답이없고 완전한 흰색 화면을 보여줍니다.
다른 스레드에서 호출 방법을 원하지 않습니다.
그것을 처리하는 가장 좋은 방법입니까?
환경 : C#, 웹 서비스
해결책
별도의 스레드에서 요청을 할 수있어 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;
}
제휴하지 않습니다 StackOverflow