Silverlight/Migration from 1.1 6

웹서비스 호출

실버라이트 1.1 어디선가 아래와 같이 비동기 호출을 하면, 가수 '비'의 동기가 나오지는 않죠? (^^;;; 죄송합니다.) // mySvc : 웹 레퍼런스로 등록한 이름 mySvc.MyWebService1 svc = new mySvc.MyWebService1(); AsyncCallback cb = new AsyncCallback(MyMethodCallback); svc .BeginMyMethod(myParam1, myParam2, ... , cb, svc); 메서드가 수행된 후 아래와 같이 비동기 호출 콜백 함수(MyMethodCallback)가 수행되면서 EndMyMethod로부터 수행 결과를 받아써야 했습니다. public void MyMethodCallback(IAsyncResult ar) { /..

Downloader 대신 WebClient

Silverlight2 에서 Downloader가 사라졌습니다. 대신에 WebClient를 사용하시면 됩니다. 파일 전송을 위한 메서드로 OpenReadAsync과 DownloadStringAsync 두가지를 지원합니다. OpenReadAsync WebClient wc = new WebClient(); wc.OpenReadCompleted += new OpenReadCompletedEventHandler(wc_OpenReadCompleted); wc.OpenReadAsync(new Uri("song.wma", UriKind.Relative)); 이벤트 핸들러는 다음과 같이 사용합니다. (e.Result는 Stream) void wc_OpenReadCompleted(object sender, OpenRea..

HtmlTimer 대신 뭘 쓰면 될까요?

Silverlight 2에서 HtmlTimer가 사라졌습니다. System.Threading.Timer도 있고 System.Windows.Threading.DispatcherTimer도 있는데 이제 무얼 쓸까요? HtmlTimer를 쓰시던 분은 DispatcherTimer를 사용하실 것을 권합니다. 사용방법이 똑같아서 변수 선언부만 찾아서 고치시고, Interval을 TimeSpan으로 수정하시면 컴파일 에러가 해결될 거예요. DispatcherTimer timer = new DispatcherTimer(); timer.Interval = TimeSpan.FromMilliseconds(3000); // 3초 timer.Tick += new EventHandler(timer_Tick); timer.Star..

Image.Source는 어떻게 쓰나

이미지 사용하기가 조금 복잡해졌어요. Image image = new Image(); image.Source = new BitmapImage(new Uri("http://hugeflow.com/HFLogo.jpg", UriKind.Absolute)); 하지만 의미를 찾자면 BitmapImage에 DownloadProgress이벤트가 있다는 것! 이제 이미지가 다 받아졌는지 확인 할 때 Timer 안 써도 된다는 것! Image image = new Image(); BitmapImage bitmap = new BitmapImage(new Uri("http://hugeflow.com/HFLogo.jpg", UriKind.Absolute)); bitmap.DownloadProgress += new Downlo..

BrowserHost야 어딜 간거니???

BrowserHost.Resize 이벤트를 많이 애용했었지요. BrowserHost가 Application.Current.Host.Content로 대체됩니다. Resized 이벤트는 이렇게 Application.Current.Host.Content.Resized += new EventHandler(Content_Resized); void Content_Resized(object sender, EventArgs e) { Width = Application.Current.Host.Content.ActualWidth; Height = Application.Current.Host.Content.ActualHeight; } IsFullScreen도 여기서 찾을 수 있습니다. Application.Current.H..