C#으로 작성된 WPF 응용 프로그램이 있습니다. 내가 작성한 WCF 서비스를 호출합니다. 때때로 WCF 서비스는 데이터를 새로 고쳐야하는지 여부에 따라 반환까지 최대 20 초가 걸릴 수 있습니다. WCF 서비스를 비동기 호출을 지원하도록 만들 수 있지만 WCF 서비스 호출을 새 스레드로 래핑하는 것이 효과적이라고 생각하는 또 다른 솔루션입니다. 나는 다음 코드로 그렇게했다.스레드가 비동기식으로 작동하지 않습니다.
new System.Threading.Thread(
new System.Threading.ThreadStart(
delegate()
{
Action del = delegate()
{
MyService.MyServiceClient ms = new MyService.MyServiceClient();
lblTotalCost.Text = ms.GetTotalCost().ToString("C");
};
this.Dispatcher.BeginInvoke(del);
})).Start();
InitializeComponent()를 실행 한 후, 이것을 내 UserControls 중 하나의 생성자 함수에 넣었다.
서비스 호출이 없으면 응용 프로그램이 서비스 호출이 완료 될 때까지 나타나지 않습니다. 이 기능을 추가하면 응용 프로그램이 즉시 나타나고 서비스 호출이 완료되면 레이블이 채워지 길 바랄 것입니다. 놀랍게도, 이것은 일어나지 않았습니다. 응용 프로그램은 서비스 호출이 완료 될 때까지 나타나지 않습니다.
내가 의도 한대로 수정하려면 어떻게해야합니까?
감사합니다.
훨씬 나아! 감사! 그럴 수는 있겠지만, 진행 상황을 이해하거나 이론을 확인하지 않고 변경을 구현하기를 원하지는 않았습니다. 도움을 감사하십시오! – Nullqwerty