내 코드는 Web service 메서드를 호출하는데,이 메서드는 작업을 수행하는 데 몇 분이 걸립니다. 그 동안 내 창은 반응이 없어지고 완전한 흰색 화면을 보여줍니다.응답하지 않음 창
다른 스레드의 호출 메소드를 사용하고 싶지 않습니다.
처리하는 가장 좋은 방법은 무엇입니까?
환경 : C#을 웹 서비스
내 코드는 Web service 메서드를 호출하는데,이 메서드는 작업을 수행하는 데 몇 분이 걸립니다. 그 동안 내 창은 반응이 없어지고 완전한 흰색 화면을 보여줍니다.응답하지 않음 창
다른 스레드의 호출 메소드를 사용하고 싶지 않습니다.
처리하는 가장 좋은 방법은 무엇입니까?
환경 : C#을 웹 서비스
별도의 스레드에서 요청할 수 있습니다. 그러면 UI 스레드가 응답합니다. 작업이 완료되면 응답을 UI 스레드와 다시 동기화해야합니다.
BackgroundWorker은 당신의 친구입니다.
여기 WebService에서 BackgroundWorker를 사용하는 방법에 대한 example입니다. 기본적으로 별도의 스레드를 사용하지 않고 UI 측면에서 집중적 인 작업을 수행 할 수있는 방법이 없습니다. BackgroundWorker는 별도의 스레드에서 실행하는 가장 좋은 방법입니다.
반응 형 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;
}
내가 다른 스레드를 사용했지만 여전히 응답하지 않는 사이를 전환 할 때 일반적으로 발생 여전히 – Buzz
그러면 문제를 이해하는 데 도움이되는 몇 가지 코드를 게시 할 수 있습니까? –
내가 다른 스레드를 사용했지만 내가 응용 프로그램을 – Buzz
응답하지 않습니다. – Buzz